MySQL Unterabfrage mit der hauptabfrage Daten variable
Ok, müssen Sie eine MySQL-guru hier. Ich bin beim schreiben einer Abfrage, die dienen als ein Benachrichtigungs-system für, wenn jemand hinterlässt einen Kommentar auf einen Artikel, den Sie haben zuvor kommentiert. Die 'drinkComment' - Tabelle ist sehr einfach:
commentID, userID, drinkID, datetime, comment
Ich geschrieben habe eine Abfrage, die alle von den Kommentaren auf Getränke, die ich vorher kommentiert (nicht von mir), aber es wird immer noch Kommentare, die aufgetreten ist, BEVOR mein Kommentar. Dies ist, wie nah an was ich denken würde, dass würde funktionieren, aber es funktioniert nicht. Bitte um Hilfe!!
select @drinkID:=drinkComments.drinkID, commentID, drinkID, userID, comment, datetime
FROM drinkComments
WHERE `drinkID` IN
( select distinct drinkID from drinkComments where drinkComments.userID = 1)
AND drinkComments.dateTime > (
/*This gets the last date user commented on the main query's drinkID*/
select datetime FROM drinkComments WHERE drinkComments.userID = 1 AND drinkComments.drinkID = @drinkID ORDER BY datetime DESC LIMIT 1
)
ORDER BY datetime DESC
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht starten mit einem prequery des Benutzers und alle Getränke, die Sie haben angeboten, Kommentare und ab welchem Zeitpunkt (weiß nicht, ob du mehrere Kommentare pro person für jede gegebene trinken oder nicht). Dann finden Sie Kommentare von allen anderen, die NACH so von Ihre Datum - /Zeit-Kommentar...
Diese Abfrage sollte eigentlich schneller sein, als es ist, BEGINNEN Sie mit nur EINEM BENUTZER trinken Kommentare als Grundlage, DANN geht zurück auf die comments-Tabelle für den passenden Getränk-ID und die cutoff-Zeit.
FROM
Abschnitt, um die Ergebnisse in der Haupt-AbfrageIch glaube, Sie brauchen, um sich zu beziehen, Ihre innersten Abfrage, um die Mitte-Abfrage drinkID.