Kezdőoldal » Számítástechnika » Programozás » SQL-ben a distinct pontosan...

SQL-ben a distinct pontosan hogyan működik és mire jó?

Figyelt kérdés

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?



#SQL #emelt szintű érettségi feladat
2017. jan. 8. 17:33
 1/7 anonim ***** válasza:
Group By csoporosít, a distinct meg pont akkor kell amire most használod.
2017. jan. 8. 19:39
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
100%
Ha több azonos sort ad vissza a lekérdezésed, a DISTINCT miatt az azonos sorok csak egyszer fognak megjelenni, nem többször.
2017. jan. 8. 19:51
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
Valójában a legegyszerűbb esetekben a GROUP BY ugyanazt a hatást váltja ki, mint a DISTINCT, ezért ha csak egyszerű eseteket nézel, könnyű összekeverni őket. De nem ugyanarra való. Tehát van, amikor működik a GROUP BY-jal is, és ilyen esetben az érettségin el is fogadják, de nem jó rászokni, amíg nem érted, milyen mellékhatása lehet. Az autót is meg lehet állítani kézifékkel, és lesz, amikor működik, de mégsem szokás, mert nem arra való.
2017. jan. 8. 22:52
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:
Előző, írhatnál egy példát distinctes lekérdezésre, amit nem lehet group by-jal kifejezni (tényleg érdekel).
2017. jan. 9. 00:56
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

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.

2017. jan. 9. 08:45
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
Én mondjuk ritkán használok distinctet, pont mert group by-jal érthetőbb nekem. De lehet az is bejátszik, hogy több queryt láttam már, ami distinct-et használt ész nélkül, és rossz volt. Nem tudom.
2017. jan. 9. 23:10
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

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.

2017. jan. 10. 10:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!