Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL: Tuplarivien poisto tuloksista

mlj195 [29.08.2017 15:06:51]

#

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ää...

groovyb [29.08.2017 15:43:18]

#

Distinct on tässä avainsana.
SQL SELECT DISTINCT Statement

mlj195 [30.08.2017 10:10:12]

#

Kokeilin sitä jo, mutta ei auttanut..

Grez [30.08.2017 10:23:44]

#

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ä.

Metabolix [30.08.2017 10:38:07]

#

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ä

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta