Ik moet de laatste versie krijgen van elke unieke guide_id (in onderstaand voorbeeld dus ID 2 en 3). Met welke query is dit te doen?


Ikzelf had al iets in de trand van onderstaand voorbeeld geprobeerd maar dat werkt uiteraard voor geen meter.
"SELECT max(date), max(time), title, guide_id, member FROM `site_guides_guilds` GROUP BY guide_id"


BVD,
Joop
Als je je datums en tijden nu in één DATETIME op zou slaan, zou het misschien al beter werken. Hij moet nu van beiden een max pakken, terwijl er waarschijnlijk een andere max(tijd) is dan max(datum), omdat tijden sneller elkaar overschrijden dan data. Hij moet dan een keuze maken, en zou dus waarschijnlijk de verkeerde keuze maken. Een datetime pakt wel de laatste.
Ik denk zelf ergens in de buurt van een soort foreach loop, waarbij je alle id's bijlangs loopt, en als die bestaat, weergeven, en dan gewoon filteren op 1 id. Bijvoorbeeld met LIMIT.

Groot nadeel is wel dat je dan elke keer weer die query moet uitvoeren, dus als je 111111 items er in hebt staan, moet je dus ook zo vaak die query uitvoeren, inverband met je LIMIT.

Maar misschien 'praat ik poep'... :P
@Mark: veel makkelijker het met SQL te doen. Sneller en ook nog eens korter, dus ruimte besparender.
@Jezpur

Je hebt gelijk. Alweer...:P
Je was ook eerder trouwens, ik was nog aan het typen... :P Maar goed ik had t al in de gaten dat het geen super snelle oplossing zou worden, maar wou toch even een steentje bijdragen. Leer ik ook weer hoe t dus niet moet. :D

\EDIT
Blijft er een ding over, hij wil ook checken of die andere id, of daar maar 1 van is, hoe wil je dat doen dan? Je kunt er dan geen limit aangeven of wel?
SELECT jouw, velden FROM tabel GROUP BY guide_id ORDER BY datum DESC, tijd DESC

Zoiets? Heb alleen het idee dat database model niet echt deugd, maar ja.

edit: Limit verwijdert, je wilt er niet maar 1 :P
En dan nog even alle opgevraagde velden in de GROUP BY meenemen.
Klaasjan Boven schreef op 30.03.2009 23:01
En dan nog even alle opgevraagde velden in de GROUP BY meenemen.

Want? Hij wil toch alleen groeperen op guide_id? En er wordt ook geen MAX/COUNT/etc meer gebruikt...

edit: Even getest, merk dat het sowieso niet werkt :S Ook al snap ik dat niet. Bij mij ordert hij pas na de groepering... Dacht dat het wel hoorde te werken :S
GROUP BY gebruik je alleen icm COUNT, MAX ed. Voor unieke records gebruik je DISTINCT
@Jezpur:
Ik zal date en time wel even in een variable gooien.

@Klaasjan Boven:
Het is de bedoeling de complete row te krijgen en niet alleen de guide_id. Van elke guide_id moet ik de laatste row krijgen (in het voorbeeld is ID 1 een verouderde versie van ID 2 en moet ID 1 dus weggelaten worden)

Reageren