È possibile fare riferimento a una query esterna in una sottoquery con MySQL? So che ci sono alcuni casi in cui ciò sia possibile:Riferimento alle tabelle della query esterna in una sottoquery
SELECT *
FROM table t1
WHERE t1.date = (
SELECT MAX(date)
FROM table t2
WHERE t2.id = t1.id
);
ma mi chiedo se una cosa del genere potrebbe funzionare:
SELECT u.username, c._postCount
FROM User u
INNER JOIN (
SELECT p.user, COUNT(*) AS _postCount
FROM Posting p
--# This is the reference I would need:
WHERE p.user = u.id
GROUP BY p.user
) c ON c.user = u.id
WHERE u.joinDate < '2009-10-10';
So che avrei potuto ottenere lo stesso utilizzando un GROUP BY
o estraendo la clausola esterna WHERE
nella subquery, ma ho bisogno di questo per la generazione automatica di SQL e non posso usare l'alternativa per vari altri motivi.
UPDATE: Siamo spiacenti, la questione ha portato a una certa confusione: La prima query è solo un esempio di lavoro, per dimostrare quello che Non bisogno.
UPDATE 2: Ho bisogno entrambi i confronti u.id = p.user: I primi utenti che hanno aderito conta prima di '2009-10-10', mentre l'altro è una condizione di join che associa correttamente righe della tabella.
perché l'aggiornamento 2? sql analizzerà la tabella derivata "c" e otterrà un elenco completo di tutti gli ID utente e dei loro conteggi dei post. il join 'ON c.user = u.id' restituirà quindi solo gli utenti che soddisfano il vincolo joinDate su' u'. – oedo
Oh, hai assolutamente ragione, sembra che sia un mio errore. Contrassegnerò il tuo commesso come risposta accettata :) – soulmerge
grazie, felice di poter aiutare :) – oedo