2011-04-28 153 views
0

我写了一个内部连接来从一个数据库中的三个表中提取信息。当我运行查询时,我得到两行返回,第二行是第一行的副本。我希望只有一行被返回?为什么SQL查询在只有一行存在时返回两行?

查询:

mysql> SELECT euroapps.id, euroapps.name, euroapps.imageurl, euroapps.website, 
    euroapps.developer, euroapps.description, euroapps.created, euroapps.iphone, 
    euroapps.ipodtouch, euroapps.ipad, app_detail.screen1 , app_detail.screen2, 
    app_detail.screen3, app_detail.screen4, application_price.retail_price 
FROM euroapps INNER JOIN app_detail ON euroapps.id = app_detail.id 
INNER JOIN application_price ON euroapps.id= application_price.application_id 
WHERE euroapps.id = 353783927; 

返回两行,而这一个只返回一个行(和预期)

mysql> SELECT euroapps.id, euroapps.name, euroapps.imageurl, euroapps.website, 
euroapps.developer, euroapps.description, euroapps.created, euroapps.iphone, 
euroapps.ipodtouch, euroapps.ipad, app_detail.screen1 , app_detail.screen2, 
app_detail.screen3, app_detail.screen4 
FROM euroapps INNER JOIN app_detail ON euroapps.id = app_detail.id 
WHERE euroapps.id = 353783927; 
+1

此查询是否返回2行'select * from application_price WHERE application_price.application_id = 353783927;'?如果是这样,那就是答案。 – Augusto 2011-04-28 16:07:28

回答

3

我认为你有两个记录application_price表,其中euroapps.id = 353783927.

你能证实吗?

+2

agh,多么笨,我非常专注于在euroapps中寻找重复项目,我忘记了其他表格中的重复项目,谈论没有看到树木的木材,非常感谢! – kitenski 2011-04-28 16:13:27

1

看起来您的application_price表有两个匹配的行。

尝试从application_price中选择外键出现两次,并且您会找到您的罪魁祸首。

1

我的猜测是application_price表包含两行application_id“353783927”。 “select * from application_price where application_price.application_id = 353783927”返回什么?我的猜测是你有一个模式,application_price指定euroapp的差价。

您似乎没有使用application_price的值,所以我不确定为什么要加入它。