2014-10-20 2 views
0

Я пытаюсь запустить этот SQL-запрос:SQL запрос выбора из двух таблиц возвращения повторяющихся строк

SELECT t.*, tu.*, t.contact_name as contact_name, 
t.contact_email as contact_email, t.ticketnumber as ticketnumber, 
t.subject as subject 
FROM tickets t, ticket_updates tu 
WHERE t.ticketnumber = tu.ticketnumber 
AND tu.type = 'update' AND tu.customer <> 'Y' 
AND t.status = 'Awaiting Customer' AND tu.datetime <= '2014-10-18 16:26:00' 
order by tu.datetime DESC LIMIT 0,5 

Это возвращает правильные результаты, но его показ кратна той же строке

+0

Он связывает соотношение между билетами и ticket_updates - это основная деталь, поэтому, если вы получаете одинаковые результаты, у вас могут быть одинаковые строки в дочерней таблице. –

ответ

1

Try, чтобы выбрать DISTINCT:

SELECT DISTINCT t.*, tu.*... 

ИЛИ вы можете попробовать GROUP BY:

SELECT t.*, tu.*, t.contact_name as contact_name, t.contact_email as contact_email, 
t.ticketnumber as ticketnumber, t.subject as subject 
    FROM tickets t, ticket_updates tu 
    WHERE t.ticketnumber = tu.ticketnumber AND 
    tu.type = 'update' AND tu.customer <> 'Y' AND 
    t.status = 'Awaiting Customer' AND 
    tu.datetime <= '2014-10-18 16:26:00' 
    GROUP BY tu.`id` 
    order by tu.datetime DESC LIMIT 0,5 
+0

Использование DISTINCT по-прежнему возвращает то же самое – user3843997

+0

, в таблице ticket_updates имеется несколько строк для каждой строки в таблице билетов – user3843997

+0

В этом случае 'GROUP BY tu.id' должен работать – AnchovyLegend

0

Для быстрого исправления вы можете использовать SELECT DISTINCT. Как правило, дублирование - это подсказка, что проблема с вашей базой данных и/или условиями соединения. Поэтому убедитесь, что в таблицах нет дубликатов, и условия соединения верны.

Смежные вопросы