SQLite返回错误的数据

时间:2013-08-31 07:45:34

标签: database sqlite

我有22行数据。但在运行此查询后

select
  AUTHORS_ABSTRACT.ABSTRACTSITEM_ID,
  ABSTRACT_AFFILIATION.AFFILIATION_NUMBER,
  AUTHORS_AFFILIATE.ABSTRACTAUTHOR_ID  

from 
  ABSTRACT_AFFILIATION,
  AUTHORS_AFFILIATE,
  AUTHORS_ABSTRACT

where         ABSTRACT_AFFILIATION._id = AUTHORS_AFFILIATE.ABSTRACTAFFILIATION_ID
and AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID = AUTHORS_AFFILIATE.ABSTRACTAUTHOR_ID

ORDER BY AUTHORS_ABSTRACT.ABSTRACTSITEM_ID ASC

如果您需要.db文件,请访问我的数据库file。因此,在运行此查询后,我获得了36行数据。

所以,我的问题是为什么它返回36行,甚至数据库中存在22行数据。

2 个答案:

答案 0 :(得分:2)

您加入的表各有22行。您在其上运行的join查询将有22^3行,其中36行最终符合查询条件。

结果没有错。

答案 1 :(得分:1)

试试这个

select     AUTHORS_ABSTRACT.ABSTRACTSITEM_ID,
           ABSTRACT_AFFILIATION.AFFILIATION_NUMBER,
           AUTHORS_AFFILIATE.ABSTRACTAUTHOR_ID
   from AUTHORS_ABSTRACT
   left join ABSTRACT_AFFILIATION on AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID = ABSTRACT_AFFILIATION._id
   left join AUTHORS_AFFILIATE on ABSTRACT_AFFILIATION._id=AUTHORS_AFFILIATE.ABSTRACTAFFILIATION_ID
   ORDER BY AUTHORS_ABSTRACT.ABSTRACTSITEM_ID ASC