为什么记录集返回为空而不是

时间:2013-04-19 11:59:28

标签: sql sqlite nested

piyasa_kontrolilaclar中有数据。并且LEFT JOIN的ilac_id和id之间存在耦合。但是查询运行时没有返回记录。

SELECT ilaclar.ilac_adi AS ilAdi
FROM (SELECT *
      FROM piyasa_kontrol
      WHERE pk_yil=2013
      AND pk_ay IN (4, 5, 6)) AS pik
LEFT JOIN ilaclar ON pik.ilac_id = ilaclar.id

这里有什么问题?谢谢。

2 个答案:

答案 0 :(得分:3)

这是你解决这类问题的方法。第1步。

select count(*)
from piyasa_kontrol 

如果这给你超过0,那么第2步

select count(*)
from piyasa_kontrol 
pk_yil=2013 

继续,直到你的查询返回0.然后你就会知道是什么导致了这种情况发生。

答案 1 :(得分:1)

ilacc_adi字段的值为空的原因是因为您使用的是left outer join

有些情况下没有匹配的记录。如果您使用了inner join,则根本看不到该行。使用left outer join,您将获得NULL值。

要调试它,但在连接ID中查看mon-matches正在发生的位置:

SELECT pik.ilac_id,  ilaclar.ilac_adi AS ilAdi
FROM (SELECT *
      FROM piyasa_kontrol
      WHERE pk_yil=2013
      AND pk_ay IN (4, 5, 6)) AS pik
LEFT JOIN ilaclar ON pik.ilac_id = ilaclar.id