SQL-ben a distinct pontosan hogyan működik és mire jó?
Egy példán keresztül:
feladat:
Lekérdezés segítségével határozza meg azoknak a tulajdonosoknak a nevét és székhelyét,
akik személyhajóval és vitorlással is rendelkeznek! A listában minden tulajdonosnév
egyszer jelenjen meg! (8vallalkozok)
megoldás (tudom ehez nem látjátok táblákat stb de most nem lényeg):
SELECT distinct tulajdonos.nev, varos
FROM (tulajdonos INNER JOIN hajo AS hajo_1 ON tulajdonos.az = hajo_1.tulaz) INNER JOIN hajo ON tulajdonos.az = hajo.tulaz
WHERE hajo_1.tipus='személyhajó' and hajo.tipus='vitorlás';
Ha jól értem a distinct itt azt okozza, hogy csak 1x írja ki a neveket. De nem értem ez egy group by-al miért nem működik... Pontosan distinctet mikor használunk és hogyan működik?
Nem olyan könnyű ilyet mondani, fordítva könnyebb lenne. Inkább a gondolati tisztaságról van szó. A mai programozásban alapelv a tiszta kód, amely puszta olvasással kifejezi a szándékainkat, és ebből a szempontból a GROUP BY használata félrevezető.
Például nézzük meg, hány felhasználó vett igénybe egy szolgáltatást adott időszakban. Van, aki többször is, de az is egynek számít.
SELECT COUNT(DISTINCT userid) FROM table...
Ezt talán nem minden SQL nyelvjárás engedi meg így.
Nem tudom, hol szerzed az olvasmányélményeidet, de én nem igazítanám a saját kódomat ahhoz, hogy mások milyen rossz kódokat írtak. :-)
A másik meg, hogy ha rendeltetésszerűen használod a kulcsszavakat, akkor lehet, hogy gyorsabb lesz a futás. Érettségin ez nem számít, élesben egy nagy táblánál igen. De az is lehet, hogy a motor felismeri a szitut, és ugyanúgy optimalizálja. Ezt csak kísérletileg lehet eldönteni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!