Почему этот запрос MySQL не возвращает больше результатов? - PullRequest
0 голосов
/ 24 июня 2011

То, что я пытаюсь сделать, это перечислять записи каждый раз, когда они отсылают кого-то, и этот человек также указан в таблице записей. 3 различных запроса, которые я пробовал:

SELECT a.ID,b.Email FROM Entries a 
INNER JOIN ReferAFriend b ON b.EntryID = a.ID 
INNER JOIN (SELECT DISTINCT Email FROM Entries c ON b.Email = c.Email)
WHERE a.ID = 47667

SELECT a.ID,b.Email FROM Entries a 
INNER JOIN ReferAFriend b ON b.EntryID = a.ID AND b.Email IN (SELECT DISTINCT Email FROM Entries) 
WHERE a.ID = 47667

SELECT a.ID,b.Email FROM Entries a 
INNER JOIN ReferAFriend b ON b.EntryID = a.ID 
WHERE b.Email IN (SELECT DISTINCT Email FROM Entries) AND a.ID = 47667

Результатом всех 3 является всего 1 запись.

Если я сделаю:

SELECT a.ID,b.Email FROM Entries a 
INNER JOIN ReferAFriend b ON b.EntryID = a.ID 
WHERE a.ID = 47667

Я получаю список из 20 записей, потому что есть 20 приглашенных друзей, однако в базе данных записей есть только 4 записи, и это то, что другой запрос должен фильтровать из этих 20, но он возвращает только 1 результат.

Кто-нибудь может указать мне правильное направление здесь?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 июня 2011

Предложение WHERE фильтрует результаты только до одного. Изменил это, и это работает.

0 голосов
/ 24 июня 2011

Слегка перестроен ...

SELECT DISTINCT STRAIGHT_JOIN 
      e1.ID,
      rf.Email 
   FROM
      Entries e1
         JOIN ReferAFriend rf
            on e1.ID = rf.EntryID
            JOIN Entries e2
               on rf.EMail = e2.EMail
   where
      e1.ID = 47667

Можете ли вы запросить и показать результаты ...

SELECT DISTINCT 
      e1.ID,
      rf.Email 
   FROM
      Entries e1
         JOIN ReferAFriend rf
            on e1.ID = rf.EntryID
   where
      e1.ID = 47667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...