Otrzymuję duplikaty, gdy wykonuję dwa POŁĄCZENIA W LEWO, aby dostać się do "nazwy zdarzenia" w poniższym przykładzie. Dostaję 112 skrzynek z tym ustawionym w ten sposób. Jednakże, jeśli pozbędę się 2 linii LEFT JOIN i uruchomię zapytanie, otrzymam właściwe 100 rekordów bez duplikatów. Próbowałem DISTINCT z poniższym kodem, ale nadal otrzymuję numer 112 z duplikatami.Jak uniknąć duplikatów zapytań sql w trzech połączonych tabelach
SELECT "cases"."id", "cases"."date", "cases"."name", "event"."event_name"
FROM "cases"
LEFT JOIN "middle_table" ON "cases"."serial" = "middle_table"."m_serial"
LEFT JOIN "event" ON "middle_table"."e_serial" = "event"."ev_serial"
WHERE "cases"."date" BETWEEN '2012-12-11' AND '2012-12-13'
Jak mogę określić, że chcę tylko dokładnie 100 przypadki z „przypadków”, a ja nie chcę niczego z tabel w przystępuje do produkcji kolejnych wierszy?
Dzięki!
Jak tabele powiązane? 1: N od 'case' do' middle_table'? Czy możesz nam coś o tym powiedzieć? –
czy możesz podać kilka danych testowych? [sql-fiddle] (http://www.sqlfiddle.com) jest świetny do tego. – Nico
W moim przypadku otrzymywałem duplikaty z powodu dołączenia do grupy jeden-do-wielu.Jedynym rozwiązaniem, które mogłem znaleźć, było użycie pod-zapytań. A ma wiele Bs. B ma wiele Cs i wiele Ds. D ma wiele Es i wiele F. Musiałem pobrać wszystkie B (które pasują do łańcucha wyszukiwania), a także agregować wszystkie powiązane C, Es i F dla każdego dopasowania. Użyłem sprzężenia zewnętrznego, aby uzyskać ABC, a następnie użyłem dwóch sub-zapytań do agregacji DE i DF. – bambams