Не удалось получить правильные записи в запросе - php mysql - PullRequest
1 голос
/ 15 октября 2011

Я выполняю следующий запрос.

SELECT * 
  FROM exam, result 
 WHERE exam.home = result.external_id 
   AND exam.away != result.external_id;

Записи в таблице экзамен :

home   away
51156   8
51158   7
51158  51182

Записи в результат таблица:

external_id
51156
51158
51182

В обычном сценарии должны быть получены первые две записи. Теперь, когда я использую '! =' Независимо, он выполняется без проблем. Значит, когда я выполню

SELECT * FROM exam, result WHERE exam.away != result.external_id

выполнено правильно. Это результат.

home   away
51156   8
51158   7

Однако в моем вышеупомянутом ошибочном запросе вывод выглядит следующим образом:

id  home   away
111 51156   8
100 51158   7
123 51158  51182

Последняя строка считается, хотя она не должна учитываться. Кто-нибудь может сказать мне, почему? Или какая-нибудь альтернатива для запроса?

Ответы [ 3 ]

1 голос
/ 15 октября 2011

Насколько я понимаю, вы ищете записи, у которых нет идентификатора в столбце away, который присутствует в таблице result.

Если это так, то этот запрос даст желаемый результат:

SELECT *
  FROM exam
 WHERE home IN (SELECT external_id FROM result)
   AND away NOT IN (SELECT external_id FROM result)
0 голосов
/ 15 октября 2011
SELECT *  
  FROM exam  
 WHERE home IN (SELECT external_id FROM result WHERE exam.home = result.external_id)  
   AND away IN (SELECT external_id FROM result WHERE exam.away!= result.external_id )
0 голосов
/ 15 октября 2011

попробуйте это:

SELECT e.home,e.away,r.external_id
FROM exam e join result r on r.external_id = e.home and e.away != r.external_id 
where e.away not in (select r.external_id from result r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...