Ik heb een plat forumpje (soort reacties op berichten) waarbij de tabel slechts deze gegevens bij houdt:
M_ID (autonumber, prim. key)
body (logisch)
R_ID (indien dit bericht een reactie is op een hoofdbericht staat hier de m_ID in)
..... nog wat dingen
DATUM (datum wanneer dit bericht geschreven is)
nu geef ik een overzicht van alle 'begin' berichten door een query uit te voeren met 'WHERE R_ID = 0', want dan weet je dus dat het geen reactie is, en dus een 'begin' bericht. Precies wat ik wil.
MAAR. nu wil men ook graag de laatste reactie zien. Met andere woorden, ik wil eigenlijk de datum van het eerste bericht, en de datum waarop de laatste reactie is geschreven.
SELECT messages.M_ID, messages.R_ID, messages.USERNAME, messages.DATUM, test.DATUM
FROM messages LEFT JOIN messages AS test ON messages.M_ID = test.R_ID
GROUP BY messages.M_ID, messages.R_ID, messages.USERNAME, messages.DATUM, test.DATUM
HAVING (((messages.R_ID)=0))
ORDER BY messages.M_ID, test.DATUM DESC;
Het probleem is dat ik nu een recordset terug krijg waar alle r_id rows in staan, en dus niet gefiltert op de laatste. Dat is niet erg, want ik kan in mijn script gewoon een vergelijking doen (alleen weergeven als het een nieuwe m_id is). MAAR hierdoor raakt mijn total_records_found helemaal door de war, en dus mijn navigatie systeempje. (hij zegt bv. 120 found, terwijl er maar 50 'begin' berichten zijn).
Met andere woorden: ik heb echt een query nodig die me slechts 1 record terug geeft per begin-bericht.
Iemand ideeen hoe dit opgelost zou kunnen worden? Ik kan de structuur van de tabel niet meer aanpassen aangezien het systeem al in gebruik is.
M_ID (autonumber, prim. key)
body (logisch)
R_ID (indien dit bericht een reactie is op een hoofdbericht staat hier de m_ID in)
..... nog wat dingen
DATUM (datum wanneer dit bericht geschreven is)
nu geef ik een overzicht van alle 'begin' berichten door een query uit te voeren met 'WHERE R_ID = 0', want dan weet je dus dat het geen reactie is, en dus een 'begin' bericht. Precies wat ik wil.
MAAR. nu wil men ook graag de laatste reactie zien. Met andere woorden, ik wil eigenlijk de datum van het eerste bericht, en de datum waarop de laatste reactie is geschreven.
SELECT messages.M_ID, messages.R_ID, messages.USERNAME, messages.DATUM, test.DATUM
FROM messages LEFT JOIN messages AS test ON messages.M_ID = test.R_ID
GROUP BY messages.M_ID, messages.R_ID, messages.USERNAME, messages.DATUM, test.DATUM
HAVING (((messages.R_ID)=0))
ORDER BY messages.M_ID, test.DATUM DESC;
Het probleem is dat ik nu een recordset terug krijg waar alle r_id rows in staan, en dus niet gefiltert op de laatste. Dat is niet erg, want ik kan in mijn script gewoon een vergelijking doen (alleen weergeven als het een nieuwe m_id is). MAAR hierdoor raakt mijn total_records_found helemaal door de war, en dus mijn navigatie systeempje. (hij zegt bv. 120 found, terwijl er maar 50 'begin' berichten zijn).
Met andere woorden: ik heb echt een query nodig die me slechts 1 record terug geeft per begin-bericht.
Iemand ideeen hoe dit opgelost zou kunnen worden? Ik kan de structuur van de tabel niet meer aanpassen aangezien het systeem al in gebruik is.