【发布时间】:2012-03-09 04:17:40
【问题描述】:
我目前正在提取三张桌子。 reports、berries 和 melons。我这样设置我的查询,它得到了我想要的。
SELECT
rpt.*,
ber.shipper, ber.po, ber.commodity, ber.label
FROM reports rpt
LEFT JOIN berries ber ON rpt.inspection_number = ber.report_key
LEFT JOIN melons mel ON rpt.inspection_number = mel.report_key
WHERE rpt.status='1' OR rpt.status='0'
ORDER BY rpt.inspection_number DESC
我的预期回报是
key | role | region | inspection_type | inspection_number | shipper | po | commodity | label
3 | NULL | Seattle | melons | 5555 | Shipper1 | PO2 | Commodity2 | Label2
2 | NULL | Seattle | berries | 1023 | Shipper1 | PO1 | Commodity1 | Label1
如果我从我的声明中删除了LEFT JOIN melons mel ON rpt.inspection_number = mel.report_key,我得到了完全相同的东西....我从来没有提到melons??
如果我修改并使用JOIN 代替浆果
SELECT
rpt.*,
ber.shipper, ber.po, ber.commodity, ber.label
FROM reports rpt
JOIN berries ber ON rpt.inspection_number = ber.report_key
WHERE rpt.status='1' OR rpt.status='0'
ORDER BY rpt.inspection_number DESC
它产生了我期望的结果!
key | role | region | inspection_type | inspection_number | shipper | po | commodity | label
2 | NULL | Seattle | berries | 1023 | Shipper1 | PO1 | Commodity1 | Label1
但是试图像这样修改我的 SQL 语句....
SELECT
rpt.*,
ber.shipper, ber.po, ber.commodity, ber.label
mel.shipper, mel.po, mel.commodity, mel.label
FROM reports rpt
JOIN berries ber ON rpt.inspection_number = ber.report_key
JOIN melons mel ON rpt.inspection_number = mel.report_key
WHERE rpt.status='1' OR rpt.status='0'
ORDER BY rpt.inspection_number DESC
网我....
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0011 sec )
给我大中指。我勒个去?谁能解释一下我显然做错了什么,以及如何解决?
【问题讨论】:
-
把浆果和甜瓜放在同一张桌子上有意义吗?
-
我希望可以,但我们实际上有大约 12 种水果类型,它们都有自己独立的字段。试图合并它们,然后再利用它们将是一场噩梦……不过,这是个好问题!
-
我相信无论有没有
LEFT JOIN到mel,你都会得到相同的结果,但我不相信你的结果。对于每个 melon 行,shipper、po和其他ber列将为 NULL。