¿Es posible hacer referencia a una consulta externa en una subconsulta con MySQL? Sé que hay algunas casos en que esto sea posible:Hacer referencia a las tablas de la consulta externa en una subconsulta
SELECT *
FROM table t1
WHERE t1.date = (
SELECT MAX(date)
FROM table t2
WHERE t2.id = t1.id
);
pero me pregunto si algo como esto podría funcionar:
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';
Sé que podría conseguir el mismo o utilizando un GROUP BY
tirando de la cláusula WHERE
externa en la subconsulta, pero lo necesito para la generación automática de SQL y no puedo usar ninguna de las alternativas por varias otras razones.
ACTUALIZACIÓN: Lo siento, la cuestión dio lugar a cierta confusión: La primera consulta es sólo un ejemplo de trabajo, para demostrar lo que No necesidad.
ACTUALIZACIÓN 2: Necesito ambas comparaciones u.id = p.user: Los primeros recuentos usuarios que se unieron antes de '2009-10-10', mientras que el otro es una condición de unión que asocia filas de la tabla correctamente.
¿por qué la actualización 2? sql analizará la tabla derivada 'c' y obtendrá una lista completa de todos los ID de usuario y sus recuentos de publicaciones. el join 'ON c.user = u.id' solo devolverá usuarios que satisfagan la restricción joinDate en' u'. – oedo
Oh, tienes toda la razón, parece que ese es mi error. Voy a marcar tu comandante como la respuesta aceptada :) – soulmerge
gracias, me alegro de poder ayudar :) – oedo