login  Naam:   Wachtwoord: 
Registreer je!
 Forum

distinct en order by

Offline cloudstrife - 05/11/2007 16:07
Avatar van cloudstrifePHP beginner
  1. SELECT DISTINCT userid, datum FROM tblfotos ORDER BY datum DESC

Bovenstaande query doet niet echt wat hij moet doen, ondanks de distinct krijg ik toch nog dubbels van userid. Waarschijnlijk zit de fout bij de combinatie van distinct en order by. Iemand die hier een oplossing voor weet?

10 antwoorden

Gesponsorde links
Offline marten - 05/11/2007 16:19
Avatar van marten Beheerder Krijg je een foutmelding?
Offline cloudstrife - 05/11/2007 16:20
Avatar van cloudstrife PHP beginner Nope, ik krijg resultaten maar de userid komt er bv 10 keer in voor terwijl ik hem maar 1 keer wil.
Offline marten - 05/11/2007 16:23
Avatar van marten Beheerder http://dev.mysq...ation.html

Bekijk het eerste commentaar eens. Misschienk is dat bij jou ook het geval.
Offline cloudstrife - 05/11/2007 16:34
Avatar van cloudstrife PHP beginner
  1. SELECT DISTINCT userid,datum FROM (tblfotos INNER JOIN tblfotos AS c ON tblfotos.userid=c.userid) ORDER BY datum DESC;

Dat zou zoiets moeten zijn dan? Die krijgt de volgende foutmelding:
#1052 - Column 'userid' in field list is ambiguous
Offline marten - 05/11/2007 16:36
Avatar van marten Beheerder tblfotos AS tbl en dan je veld word tbl.userid
Offline cloudstrife - 05/11/2007 16:39
Avatar van cloudstrife PHP beginner Nope, zeflde foutmelding.
Offline marten - 05/11/2007 16:40
Avatar van marten Beheerder SELECT DISTINCT userid,datum

===>

SELECT DISTINCT tblfotos.userid,tblfotos.datum

zo heb je ook gedaan hoop ik?
Offline cloudstrife - 05/11/2007 17:17 (laatste wijziging 05/11/2007 17:24)
Avatar van cloudstrife PHP beginner
  1. SELECT DISTINCT tbl.userid,tbl.datum FROM (tblfotos AS tbl INNER JOIN tblfotos AS c ON tbl.userid=c.userid) ORDER BY tbl.datum DESC;

Zo, krijg ik geen foutmelding maar mijn resultaat blijft hetzelfde als in het begin, terug die dubbele rijen...
Offline Gerard - 05/11/2007 17:24
Avatar van Gerard Ouwe rakker Wanneer je DISTINCT gebruikt en dan meerdere velden selecteerd moet je er rekening mee houden dat de DISTINCT dan over meerdere kolommen geld.

In dit geval krijg je dus ALLE UNIEKE COMBINATIES van userid & datum terug. Wanneer de volgende posts dus aanwezig zijn in de database:
1 - 2007-11-05 17:20:00
2 - 2007-11-05 17:21:00
1 - 2007-11-05 17:22:00
1 - 2007-11-05 17:22:00

Krijg je dus de eerste 3 resultaten terug van de database. Omdat de kolommen samen een UNIEKE waarde vormen. Waarschijnlijk kan je in dit geval dus beter gebruik maken van GROUP BY.
Offline cloudstrife - 05/11/2007 17:27
Avatar van cloudstrife PHP beginner
  1. SELECT userid, datum
  2. FROM tblfotos
  3. GROUP BY userid
  4. ORDER BY datum DESC

Je bedoeld zo? Had ik ook al geprobeerd maar blijkbaar heeft hij hier ook last mee want als ik een nieuwe foto toevoeg zou deze bovenaan moeten staan en dat gebeurt niet... Heb hierover het een en ander opgezocht en blijkbaar zou die combinatie group by en order by vaak problemen geven ivm de gebruikte sorteeralgoritmen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.182s