【发布时间】:2012-11-11 00:57:18
【问题描述】:
这是我的实际查询:
SELECT temp.id_company AS id_company
, temp.code_product AS id_product
, temp.date_product AS date_p
FROM (
SELECT *
FROM companies
INNER JOIN products
ON products.id_company_product = companies.id_company
WHERE module_key_company = "daL/RqzZcfqc."
) AS temp
WHERE temp.code_product = "app_12"
首先我得到companies.id_company where companies.module_key_company 匹配“dal.....”然后我检查是否匹配products.code_product = "app_12" 和products.id_company = companies.id_company 我在第一次测试后得到。
如果这两个条件都成立,我得到我想要的。但如果products.code_product 不匹配,我也想获得company.id_company。
即使code_product 错误,我也无法找到仅通过module_key 测试才能获得id_company 的方法。
感谢您的帮助。
【问题讨论】:
-
听起来好像你想要一个左或右
outer join,这样仍然会输出Company 表中在Products 中缺少匹配项的行。 -
我不明白...你的意思是只用两个条件做一个 SELECT 但只用 LEFT 加入而不是 INNER ?
-
见Wikipedia article关于外连接。本质上,即使无法满足连接的 ON 条件,其中一张表仍会输出其所有信息,而输出的某些行可能包含不匹配条件的 NULL 值。
-
好的,我想我明白了,它对我不起作用。因为我确信我会在 module_key 上得到匹配,所以得到一个 id_company。但在某些情况下,我无法匹配得到的 id_company 上的 code_product。对不起,如果我暴露得很糟糕,我需要睡觉......