我使用3个表来收集数据。过程如下:
。
我的脚本如下所示:
SELECT
cases.case_id,
cases.lastcalc_model_options,
cases.country,
calculations.calculation_id,
calculations.license,
positions.text
FROM cases
INNER JOIN calculations ON(cases.case_id =calculations.case_id
AND cases.country = calculations.country)
INNER JOIN positions ON(calculations.case_id = positions.case_id
AND calculations.calculation_id = positions.calculation_id)
WHERE vin ='ABCDEFGH'
这个选择工作正确,问题开始时,例如,没有结果与case_id和calculation_id的表位置。
,而不是回馈至少在其他表中找到的所有东西。有没有办法改变这种komplex SELECT来返回它发现的所有东西,只有当每个条件都为TRUE时才会返回?
答案 0 :(得分:1)
你的问题是INNER JOIN。使用INNER JOIN,结果只包含所有表中的条目。请尝试使用LEFT JOIN。
SELECT
cases.case_id,
cases.lastcalc_model_options,
cases.country,
calculations.calculation_id,
calculations.license,
positions.text
FROM cases
LEFT JOIN calculations ON(cases.case_id =calculations.case_id
AND cases.country = calculations.country)
LEFT JOIN positions ON(calculations.case_id = positions.case_id
AND calculations.calculation_id = positions.calculation_id)
WHERE vin ='ABCDEFGH'
有关更深入的信息,请参阅this stackoverlow answer。
答案 1 :(得分:1)
仅当两个表中的列之间存在匹配时,INNER JOIN才会返回两个表中的行。 您可以尝试LEFT JOIN或FULL OUTER JOIN。