Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PostgreSQL _ bez powtórzeń DISTINCT ON (u.id ) ,*

Napisany przez: gregi 9.09.2015, 16:56:42

jak wywietlić wszystkie pola lecz bez powtórzeń
bez gwiazdki działa poparawnie lecz mam 40 pól i niechcę ich wszystkich wpisywać dlatego gwiazdka

  1. SELECT DISTINCT ON (u.id ) u.id,* FROM uzytkownicy u LEFT JOIN uzytkownicy__xxx ujo ON u.id =ujo.id_uzytkownika WHERE ujo.id_jednostki IN ( 28,22,33,44 ) ORDER BY u.id , *

Napisany przez: mmmmmmm 10.09.2015, 08:09:28

Tak się nie da... Skopałeś sobie tabelę (ID NIGDY W ŻYCIU NIE POWINNO SIĘ POWTÓRZYĆ), to teraz musisz zrobić coś takiego:
1. Dodaj sobie do tej tabeli pole typu SERIAL NOT NULL (np. unikalne_id)
2. SELECT id, Min(unikalne_id) uid FROM uzytkownicy GROUP BY id /* albo Max(unikalne_id) */
3. Wg mnie LEFT JOIN jest zbędny (zwykły JOIN starczy)
4. Ta * przy ORDER BY również

A teraz pytanie...
Załóżmy że masz tabelę:
id imie nazwisko
1 Jan Kowalski
1 Anna Nowak
1 Piotr Wójcik
To która osoba z id=1 ma pozostać?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)