mysql unisce stanno guidando mi fa impazzire!
Domanda
Così ho chiesto a un paio di domande sull'esecuzione unisce e hanno avuto grandi risposte, ma c'è ancora una cosa che sto completamente sconcertato da.
Ho 3 tabelle. Chiamiamo loro tavolo-b, tavolo-D e la tabella-e.
Tabella-B e la quota di tavolo-d una colonna chiamata p-id.
Tabella-e e la tabella-b quota di una colonna chiamata ev-id.
Tabella-e ha anche una colonna chiamata data.
Tabella-b ha anche una colonna ID unico chiamato u-id.
Mi piacerebbe scrivere una query che restituisce u-id nelle seguenti condizioni:
1) Restriced ad un certo valore in table-e.date.
2) Dove tavolo b.p-id non corrisponde alla tabella-d.p-id.
Credo di aver bisogno di interiore tavolo-b ed e tavolo-e join sulla colonna di e-id. Ho poi che ho bisogno di eseguire una sinistra unirsi sul tavolo-d e e tavolo-b dove p-id è nullo.
Il mio problema è che io non conosco la sintassi di scrivere questa query. Io so come scrivere più join interni e so come scrivere un join sinistro. Come faccio a combinare le due cose?
Grazie mille a tutti coloro che mi sta aiutando. Sono (ovviamente!), Un novizio di database e sto lottando per ottenere la mia testa intorno ad esso tutti!
Soluzione
Credo che sia qualcosa di simile:
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)
Altri suggerimenti
Basta scrivere i join uno dopo l'altro:
SELECT b.uid
FROM b
INNER JOIN e USING(evid)
LEFT JOIN d USING(pid)
WHERE e.date = :whatever
AND d.pid IS NULL