Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno SQL - distinct

Zdravím...
mám tabulku 'klienti' s cca 30 sloupci.
Někteří klienti jsou zde několikrát, ale to má své důvody.

Stejné klienty chci poznat posle duplicitního sloupce telefon.

Jak mám vypsat všechny sloupce a všechny klienty tak, aby je jedno telefonní číslo neopakovalo?

Zkoušel jsem funkci distinct, ale nepovedlo se mi vypsat všechny sloupce, ale jen sloupec telefon.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Někteří klienti jsou zde několikrát, ale to má své důvody. To máš akože pre jedného klienta riadky,…
los 07.01.2013 12:38
los
To máš akože pre jedného klienta riadky, ktoré majú vo všetkých stĺpcoch rovnaké hodnoty? je to 1:n…
lukinpark 07.01.2013 13:18
lukinpark
Napríklad: select k1.* from klienti k1 join ( select klient_id, max(created) created from klienti g… nový
los 07.01.2013 14:24
los
paráda, přesně toto jsem potřeboval... díky moc... poslední
lukinpark 07.01.2013 15:03
lukinpark

Někteří klienti jsou zde několikrát, ale to má své důvody.

To máš akože pre jedného klienta riadky, ktoré majú vo všetkých stĺpcoch rovnaké hodnoty? Ak áno, tak to nedáva zmysel. Zaujímali by ma tie dôvody (stačí jeden) mať viacero rôznych záznamov pre jedného klienta.

Jak mám vypsat všechny sloupce a všechny klienty tak, aby je jedno telefonní číslo neopakovalo?

Ak nemáš vo všetkých stĺpcoch rovnaké hodnoty, tak čo chceš vlastne vypísať pre dvoch rôznych klientov s rovnakým telefónnym číslom?

Spájať klientov len na základe rovnakého telefónneho čísla nie je vôbec spoľahlivé.

To máš akože pre jedného klienta riadky, ktoré majú vo všetkých stĺpcoch rovnaké hodnoty?

je to 1:n, ale v jedné tabulce... převzal jsem jeden systém a ten je úplně špatně, ale překopávat ho nechci...

dejme tomu mám

| id | klient_id | telefon   | create     | popis                 |
|----|-----------|-----------|------------|-----------------------|
|-1--|-1---------|-123456789-|-2012-12-30-| Klient nemá zájem     |
|----|-----------|-----------|------------|-----------------------|
|-2--|-1---------|-123456789-|-2012-10-12-| Neodpovídá            |
|----|-----------|-----------|------------|-----------------------|
|-3--|-2---------|-987654321-|-2012-08-11-| Našel jinou nabídku   |
|----|-----------|-----------|------------|-----------------------|
|-4--|-1---------|-123456789-|-2012-05-01-| Domlouvá se           |
|----|-----------|-----------|------------|-----------------------|
|-5--|-3---------|-555555555-|-2012-05-01-| Mám zavolat později   |
|----|-----------|-----------|------------|-----------------------|
|-6--|-2---------|-987654321-|-2012-01-01-| Zítra bude dojednání  |
|----|-----------|-----------|------------|-----------------------|

a chci, aby se mi vypsal každého klienta jen jednou, ale s posledním popisem.

Napríklad:

select k1.* from klienti k1 join (
  select klient_id, max(created) created from klienti group by klient_id
) k2 on k1.klient_id=k2.klient_id and k1.created=k2.created;

Edit: Spojil som to podľa klient_id a nie podľa telefon, takže ak to chceš spájať naozaj podľa telefónu, tak si to uprav.

Zpět do poradny Odpovědět na původní otázku Nahoru