gpt4 book ai didi

mysql - 如果结果为空,则从 3 个表中选择

转载 作者:行者123 更新时间:2023-11-29 06:28:19 25 4
gpt4 key购买 nike

我正在使用 3 个表从中收集数据。过程如下:

  • 用户将 VIN 写入表格
  • 根据该 vin 在表 1 中搜索 case_id 和国家/地区的脚本数
  • 之后,他使用 case_id 和 country 在表 2 中进行搜索并从那里获取计算 ID
  • 根据该计算 ID 和案例 ID 在第 3 个表中搜索<​​/li>

.

我的脚本是这样的:

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 的结果时,问题就开始了。它不会返回至少在其他表中找到的所有内容,而是返回任何内容。

有没有办法改变这种复杂的 SELECT 以返回它找到的所有内容,而不是仅在每个条件都为真时才返回某些内容?

最佳答案

您的问题是 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以获得更深入的信息。

关于mysql - 如果结果为空,则从 3 个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29532847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com