Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 即使有一个条件为false,也要获取一个值_Sql_Where_Exists - Fatal编程技术网

Sql 即使有一个条件为false,也要获取一个值

Sql 即使有一个条件为false,也要获取一个值,sql,where,exists,Sql,Where,Exists,以下是我的实际问题: 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 WHE

以下是我的实际问题:

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"
首先,我得到
companys.id\u company where companys.module\u key\u company
匹配“dal…”,然后我检查是否得到
products.code\u product=“app\u 12”
products.id\u company=companys.id\u company
的匹配

如果这两个条件都成立,我就会得到我想要的。但是如果没有与
产品相匹配的companys.id\u company.code\u product
,我还想获得companys.id\u company

即使
code\u产品
错误,我也无法找到仅使用
module\u键
测试才能获得公司id的方法


谢谢您的帮助。

很难说清楚您的表结构是什么,除非您用表名作为列名的后缀。这就是我的猜测。试试这个:

SELECT C.id_company, P.code_product, P.date_product
  FROM Companies AS C
    LEFT OUTER JOIN Products AS P ON P.id_company_product = C.id_company
  WHERE module_key_company = 'daL/RqzZcfqc.'
    AND (P.code_product = 'app_12' OR P.code_product is NULL) 
最好的, 乔

试试这个:

SELECT C.id_company, P.code_product, P.date_product
  FROM Companies AS C
    LEFT OUTER JOIN Products AS P ON P.id_company_product = C.id_company
  WHERE module_key_company = 'daL/RqzZcfqc.'
    AND (P.code_product = 'app_12' OR P.code_product is NULL) 
SELECT companies.id_company
     , coalese(products.code_product,'NONE') as id_product
     , products.date_product as date_p
FROM companies 
LEFT OUTER JOIN products
   ON     products.id_company_product = companies.id_company
      and products.code_product = 'app_12'

WHERE companies.module_key_company = 'daL/RqzZcfqc.'

对于没有任何匹配产品的公司,
id\u product
列将包含文本NONE
date\u p
列将null。此外,您应该使用单引号来提供字符常量,而不是双引号。

听起来好像您需要左或右
外部联接,这样,Companys表中在Products中缺少匹配项的行仍将被输出。我不明白…您的意思是只使用两个条件进行一次选择,但只使用左连接而不是内部连接?有关外部连接,请参见此。本质上,即使不能满足连接的ON条件,其中一个表仍将有其所有信息输出,而输出的某些行可能包含不匹配条件的空值。好的,我想我得到了它,它对我不起作用。因为我确信我会在模块上找到匹配的密钥,从而得到一个公司的id。但在某些情况下,我将无法获得与got id_公司上的code_产品匹配的代码。很抱歉,如果我暴露得很严重,我需要睡眠…好吧,它工作得很好,我不知道有可能把这种情况放在ON条款中…非常感谢。