Kuvitteellinen esimerkki:
Listaan henkilöitä ja kaupunkeja. Tarvitsen tietoja kahdesta eri taulusta.
Jos yhdellä henkilöllä olisi kaksi eri osoitetta samassa kaupungissa, tulisi listasta tällainen:
hlö 1 Oulu
hlö 1 Oulu
hlö 2 Helsinki
hlö 3 Turku
hlö 3 Turku
Tarvitsisin tiedoksi kuitenkin vain tuon kaupungin, eli miten saisin kyselyn niin ettei se piittaisi osoitteesta ollenkaan, vaan näyttäisi yhdelle henkilölle vain yhden kaupungin? Voiko ongelma johtua siitä että juurikin tuo osoite toimii linkkinä kahden taulun välillä? Kuitenkaan mikään muu tieto ei oikeastaan sovi linkiksi, joten sitä on pakko käyttää...
Distinct on tässä avainsana.
SQL SELECT DISTINCT Statement
Kokeilin sitä jo, mutta ei auttanut..
Jos
SELECT DISTINCT Hlö, Kaupunki FROM Taulu
palauttaa
1 Oulu
1 Oulu
.. jne
niin noissa Ouluissa on jotain eroja, esimerkiksi välilyöntejä tms. näkymättömiä merkkejä.
Jos haku palauttaa myös muita sarakkeita, jotka ovat riveillä erilaiset mutta joista vain yhdet tarvitaan, rivit voi yhdistää myös ryhmittelyllä (GROUP BY Hlö) tai ylimääräisellä liitoksella erityisesti tuplarivien poistoa varten:
SELECT a.*, b.* FROM a JOIN b ON b.juttu = a.juttu LEFT JOIN b AS b2 ON b2.juttu = a.juttu AND b2.id < b.id WHERE b2.id IS NULL -- eli ei löydy b-riviä pienemmällä id:llä
Aihe on jo aika vanha, joten et voi enää vastata siihen.