Autor Zpráva
JardaB
Profil
Zdravim, mozna hloupa otazka, ale hodil by se mi dotaz na vypis polozek dle sloupce jmeno, kdy jmena ve sloupci se mohou opkovat. Vysledek dotazu vsak nesmi tyto duplicity jiz obsahovat. Je takovy dotaz vubec mozny?
Tori
Profil
SELECT DISTINCT jmeno FROM tabulka - zvýrazněné klíčové slovo odstraní duplicity z nalezených výsledků.
JardaB
Profil
Tori:
To je opravdu tak snadne?


Tori:
Jeste mozna zda lze dotaz rozsirit treba i na prijmeni, ktere je v jinem sloupci tak aby se vyloucila duplicita celeho jmena. Tedy vyhovi jan novak, petr novak, petr hanak atd....
JardaB
Profil
Tak na to předchozí co jsem se ptal funguje tohle:

SELECT DISTINCT jmeno, prijmeni FROM tabulka

jenže pokud chci dostat i hodnoty jiných sloupců, tak nevím jak ten zápis upravit. Potřebuji vypsat i další hodnoty jako id, popis atd. a ty do duplicity nezahrnovat, ale když uvedu

SELECT DISTINCT jmeno, prijmeni, id, popis FROM tabulka

tak je to logicky kravina. Potřebuji ty ostatní sloupce vyjmout z porovnávání duplicity. Uvedení před DISCINT nelze.
juriad
Profil
A které id se má zobrazit, když provedeš distinct podle jména? Náhodné, první?

Budu předpokládat, že id je primární klíč.
Použij GROUP BY ve vnořeném selectu (ten pro každou existující dvojici jméno – příjmení vybere nejmenší existující id), vnější dotaz už jen doplní zbylé údaje podle id:
SELECT tabulka.*
FROM   tabulka
       JOIN (SELECT Min(id)
             FROM   tabulka
             GROUP  BY jmeno,
                       prijmeni) dist
         ON tabulka.id = dist.id  
JardaB
Profil
Nyní jsem testoval tohle a funguje

SELECT jmeno, prijmeni, id
FROM tabulka
GROUP BY jmeno, prijmeni

dle dokumentace je to ve většině případech ekvivalent právě

SELECT DISTINCT jmeno, prijmeni FROM tabulka
juriad
Profil
JardaB:
To je účel. Oproti DISTINCTu navíc ale získáš id některého ze záznamů s daným jménem a příjmením.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0