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!

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top