2013-03-12 51 views

回答

1

當你加入到Cost表不包括適當的連接條件:

INNER JOIN `cost` `C` 
    ON `I`.`Section` = c.section -- = c.section is missing 
    AND `L`.`level` = c.level; -- = c.level is missing 

所以你的完整查詢將是:

SELECT `F`.`date`, 
    `F`.`time`, 
    `F`.`tname`, 
    `I`.`section`, 
    `L`.`level`, 
    c.price 
FROM `booking_for_schedule` `F` 
INNER JOIN `booking_in_seats` `I` 
    on `F`.`tname`=`I`.`tname` 
    AND `F`.`booking_num` = `I`.`booking_num` 
INNER JOIN `level` `L` 
    on `F`.`date`=`L`.`date` 
    AND `F`.`time`=`L`.`time` 
    AND `F`.`tname`=`L`.`tname` 
INNER JOIN `cost` `C` 
    ON `I`.`Section` = c.section 
    AND `L`.`level` = c.level; 

SQL Fiddle with Demo

+0

啊!非常感謝你。我想隨着我的選擇陳述變得更大,我失去了比較的蹤跡。 – 2013-03-12 02:53:03

+0

@MarcoPietroCirillo不客氣!有時候很容易錯過這些! :) – Taryn 2013-03-12 02:53:27

0

看起來您缺少INNER JOIN cost C上的某個子句(當您加入Cost表時)。

它應該是這樣的:的

INNER JOIN `cost` `C` ON `I`.`Section`=`C`.`Section` AND `L`.`level`=`C`.`level` 

代替:

INNER JOIN `cost` `C` ON `I`.`Section` AND `L`.`level` 
0

你已經錯過了加入列。你沒有結果的原因是因爲I.Section AND L.level將始終返回false。

SELECT F.date, 
     F.time, 
     F.tname, 
     I.section, 
     L.level, 
     c.* 
FROM booking_for_schedule F 
     INNER JOIN booking_in_seats I 
      ON F.tname = I.tname AND 
       F.booking_num = I.booking_num 
     INNER JOIN level L 
      ON F.date = L.date AND 
       F.time = L.time AND 
       F.tname = L.tname 
     INNER JOIN cost C 
      ON I.Section = C.Section AND -- <<== HERE 
       L.level = C.level   -- <<== HERE 
0

你的最後一行的問題是:

INNER JOIN `cost` `C` ON `I`.`Section` AND `L`.`level` 

它應該是這樣的:

INNER JOIN `cost` `C` ON `I`.`Section` = `C`.`Section` AND `L`.`level` = `C`.`Level`