MySQL se une a me están volviendo loco!
Pregunta
Así que le he pedido a un par de preguntas acerca de cómo realizar uniones y han tenido grandes respuestas, pero todavía hay algo que estoy completamente confundido por.
Tengo 3 tablas. Llamémoslas mesa-b, d-mesa y mesa-e.
Tabla-b y compartir mesa d una columna llamada p-id.
Tabla-e y mesa-b cuota de una columna denominada EV-id.
Tabla-e también tiene una columna llamada fecha.
Tabla-B también tiene una columna de identificador único llamado U-id.
Me gustaría escribir una consulta que devuelve T-id en las siguientes condiciones:
1) Restriced a un cierto valor en table-e.date.
2) ¿Dónde mesa p.e-id no coincide con mesa-d.p-id.
Creo que necesito combinación interna mesa-by y mesa-e en la columna de la identificación electrónica. entonces yo creo que tenga que realizar una izquierda unirse en la mesa-dy y mesa-B donde p-id es nula.
Mi problema es que no sé la sintaxis de escribir esta consulta. Yo sé cómo escribir múltiples combinaciones internas y sé cómo escribir una combinación izquierda. ¿Cómo combino los dos?
Muchas gracias a todos los que me está ayudando a cabo. Estoy (obviamente!) Un novato en las bases de datos y estoy luchando para conseguir mi cabeza alrededor de todo!
Solución
Creo que es algo como esto:
SELECT uid
FROM table-b
INNER JOIN table-e
ON table-b.ev_id = table-e.ev_id
WHERE table-b.p_id NOT IN (SELECT p_id from table-d)
Otros consejos
Se acaba de escribir las juntas, una tras otra:
SELECT b.uid
FROM b
INNER JOIN e USING(evid)
LEFT JOIN d USING(pid)
WHERE e.date = :whatever
AND d.pid IS NULL