Diese Abfrage ist keine rechtliche Syntax und ich versuche zu verstehen, was die effiziente Art des Schreibens ist. Dies ist, was ich habe:Richtiger Weg, um eine MySQL-Abfrage zu schreiben, die eine abgeleitete Spalte und mehrere Joins verwendet
SELECT a.*, b.id, lapsed FROM
(SELECT DATEDIFF(CURDATE(), MAX(day)) AS lapsed FROM c) AS x
FROM first_table a
INNER JOIN second_table b ON a.id = b.some_id
INNER JOIN third_table c ON c.user_id = a.user_id
WHERE a.some_col = 'm'
AND b.num >= lapsed
Es gibt drei Tabellen verbunden werden. Normalerweise wäre das trivial, aber das Problem ist mein letzter Teil der WHERE
Klausel, speziell b.num >= lapsed
macht einen Vergleich über einen derived
Wert. Gibt es einen richtigen Weg dies zu schreiben?
2 FROM ist nicht erlaubt. Aber ein LINKER JOIN bei einer Unterabfrage ist möglich. Da es sich um eine Zeile in x handelt, kann das ON-Kriterium für Join (1 = 1) sein. – LukStorms
jede Chance, dass Sie eine Anfrage als Antwort einreichen können, damit ich es entsprechend markieren kann? – randombits
Sie und ich haben unterschiedliche Vorstellungen darüber, wo das Problem in Ihrer Abfrage liegt. – Strawberry