Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: distinct dla left join
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
php programmer
Witam,

Mam zapytanie

SELECT ... LEFT JOIN

jako że z jedym wierszem głównej tabeli jest powiązanych kilka wierszy podrzędnej tabeli
łączonej za pomocą LEFT JOIN, w wyniku dostaje kika wierszy z głównej tabeli,

czy da się zrobić coś w rodzaju DISTINCT dla LEFT JOIN
kszychu
Nie szybciej by było to sprawdzić samemu?
php programmer
Ale co sprawdzić?
Ja sie pytam jak zrobić coś takiego,

poza tym nie pozwala mi zrobić zwykłego DISTINCT po kolumnie pochodzącej z LEFT JOINa
jastu
Ale jak chcesz to połączyć ? Tabele bazową z piewszym wierszem który pasuje do warunku ON z tabeli dołączanej ?
Jeśli robisz jakiegoś COUNT'a to połączy bez dubli.
php programmer
dobra, rozwiązałem to już po swojemu,
problem jest na tyle nietypowy, że nie chce mi sie już was zamęczać,

PS. Count do left joina?
mefjiu
Mam dokładnie takie sam problem proszę o pomoc kogoś kto zna się na mysql
cathbad.b
Mam dokładnie ten sam problem

Potrzebuję konstrukcji która zachowa się tak jakbym zrobił 'DISTINCT LEFT/RIGHT JOIN'.
Postaram się to zobrazować.
Mam tabele:
sms (id, id_zadanie, data)
zadanie(id)

Czasem jest wysyłanych kilka smsów do jednego zadania.
Dlatego NIE jest dla mnie istotne który wiersz id_zadanie będzie połączony z tabelą sms
(bo każdy połączny wiersz z tabeli zadanie jest taki sam dla wiersza z tabeli sms) Ważne, żeby był jeden! (a inner/left/right/natural join zwróci wszystkie pasujące z tabeli zadanie).
Jest to sytuacja typowa dla konstrukcji 'DISTINCT ON'.
Nie mogę użyć DISTINCT ON, bo klauzula ORDER BY musi być inicjowana kolumną wymienioną w DISTINCT ON . A chcę sortować np. po dacie.


PS.Proszę o konkretne odpowiedzi.


Problem rozwiązany. Dla zainteresowanych.:
Nie ma de facto konstrukcji w rodzaju distinct join.

Ale da się to obejść robiąc zapytanie z inner join oraz funkcją okienkową rank().
mkozak
Nie możesz zrobić po prosty podzapytania

SELECT DISTINCT sms_id,zadanie_id FROM (
.... tutaj wtoje zapytanie z left joinem
)

questionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.