下面是用模式和樣本查詢小提琴:http://sqlfiddle.com/#!2/573ec4/9加入了4桌
我期待回到C.price使用I.section和L.level,這是通過其他連接獲得。當使用費用的內部連接時,我剩下沒有結果:http://sqlfiddle.com/#!2/573ec4/2
由於成本是一個表格,它將一個部分和層次映射到一個價格,我希望能夠計算出我的所有放映的價格查詢
下面是用模式和樣本查詢小提琴:http://sqlfiddle.com/#!2/573ec4/9加入了4桌
我期待回到C.price使用I.section和L.level,這是通過其他連接獲得。當使用費用的內部連接時,我剩下沒有結果:http://sqlfiddle.com/#!2/573ec4/2
由於成本是一個表格,它將一個部分和層次映射到一個價格,我希望能夠計算出我的所有放映的價格查詢
當你加入到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;
看起來您缺少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`
你已經錯過了加入列。你沒有結果的原因是因爲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
你的最後一行的問題是:
INNER JOIN `cost` `C` ON `I`.`Section` AND `L`.`level`
它應該是這樣的:
INNER JOIN `cost` `C` ON `I`.`Section` = `C`.`Section` AND `L`.`level` = `C`.`Level`
啊!非常感謝你。我想隨着我的選擇陳述變得更大,我失去了比較的蹤跡。 – 2013-03-12 02:53:03
@MarcoPietroCirillo不客氣!有時候很容易錯過這些! :) – Taryn 2013-03-12 02:53:27