Ongelmana on etsiä tietokantataulusta 'tuplat' SQL:ää käyttäen (eli siis SELECT * FROM taulu ... tyylisesti).
Eli, jos taulu olisi tälläinen:
nimi ikä
-----------------
Anna 22
Milla 19
Elina 18
Ville 23
Jarkko 19
Seppo 24
Niina 22
Samuli 22
niin millainen SQL lauseke palauttaisi tuloksen:
Milla 19
Jarkko 19
Anna 22
Niina 22
Samuli 22
eli lauseke hakisi ikä-kentän perusteella ne tietueet, joita on enemmän kuin yksi samaa. Kiitokset tietäjille :)
Enpä tiedä onnistuuko toi että valitaan "tuplat" ainakin on semmoinen millä jätetään pois tuplat (DISTINCT).
Voit valita kaikki rivit ja jollain PHP skriptillä valita vain "tuplat".
SELECT * FROM nimet WHERE ika BETWEEN 19 AND 22
Päivitän viestiä jos keksin jonkun SQL ratkaisun.
Tarkasta vielä tämä linkki. Ihan hyvä SQL opas. http://www.w3schools.com/sql/default.asp
En tiedä sen toiminnasta oikeastaan mitään, mutta jos se voi pudottaa tuplat pois, niin voisiko se poistaa alkuperäisestä taulukosta uuden taulukon, josta on poistettu tuplat, jolloin uuteen taulukkoon jäisi vain tuplat jäljelle.
No perjaatteessa, mutta tuo on täysin turhaa tietokannan koon kasvattamista.. Joku PHP skripti voisi olla paikallaan joka hakee tuloksesta vain tuplat.
SELECT nimi, ika
FROM Taulu
WHERE ika IN (SELECT ika FROM Taulu GROUP BY ika HAVING count(ika)>=2)
ORDER BY ika, nimi
Miksiköhän tuo Otypen select ei toimi mulla???
Aliselect toimii yksinään, mutta yhdistettynä pääkyselyyn (koko toi lause) ei enää toimikaan.
Tällä sain pelittämään:
SELECT distinct a.nimi, a.ika
FROM Taulu a, taulu b
WHERE a.ika=b.ika and a.nimi<>b.nimi
ORDER BY a.ika, a.nimi
MySQL:ssä ei alikyselyt toimi, jospa käytät sitä (uuteen versioon kylläkin löytyy tuki niille). Itse testasin tuon kyselyn MSSQL-Serverillä.
Minun mielestäni tuota DISTINCT:iä ei tarvitse tuossa sinun kyselyssäsi. Muutenkin DISTINCT:in käyttöä tulisi välttää, koska se on hidas.
Joo, testasin MySQL:ssa.
Ilman distinctia toi kysely palauttaa tuplia.
Joo tiedän, että se palauttaa "tuplia" joissain tapauksissa, mutta tuossa kyselyssä ei, koska tuossa WHERE-ehdossa varmistetaan tämä. Vai?
...mutta mitä käy sellaisessa tapauksessa, jossa on vaikka kaksi saman nimistä ja saman ikäistä ihmistä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.