Почему SQL-запрос возвращает две строки, когда существует только одна? - PullRequest
0 голосов
/ 28 апреля 2011

Я написал внутреннее соединение для извлечения информации из трех таблиц в одной базе данных. Когда я запускаю запрос, мне возвращаются две строки, вторая является дубликатом первой строки. Я ожидаю, что будет возвращена только одна строка?

Запрос:

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;

Ответы [ 3 ]

3 голосов
/ 28 апреля 2011

Я думаю, у вас есть две записи в таблице application_price, где euroapps.id = 353783927.

Можете ли вы подтвердить?

1 голос
/ 28 апреля 2011

Я думаю, что таблица application_price содержит две строки для application_id "353783927".Что возвращает «выберите * из application_price, где application_price.application_id = 353783927».Я предполагаю, что у вас есть схема, в которой application_price указывает разницу в цене для euroapp.

Вы, кажется, не используете, и значения из application_price считаются, и поэтому я не уверен, почему вы присоединяетесь к нему.

1 голос
/ 28 апреля 2011

Похоже, что в вашей таблице application_price есть две совпадающие строки.

Попробуйте выбрать из application_price, где внешний ключ появляется дважды, и вы найдете своего виновника.

...