Salve a tutti,
ho un problema logico (semplice, banale, sicuramente da niubbo) per trovare un id su N tabelle associative.
Questo lo schema di esempio
Codice PHP:
ACCOUNT
-------+-----+
| name | uid |
-------+-----+
| aaa | 1 |
| bbb | 2 |
| ccc | 3 |
| ddd | 4 |
| eee | 5 |
-------+-----+
PIPPO
-------+-----+
| piid | uid |
-------+-----+
| 1 | 1 |
| 2 | 2 |
-------+-----+
PLUTO
-------+-----+
| plid | uid |
-------+-----+
| 1 | 2 |
-------+-----+
PAPERINO
-------+-----+
| paid | uid |
-------+-----+
| | |
-------+-----+
In pratica ho i vari uid della tabella ACCOUNT presenti (o NON presenti) nelle altre tabelle PIPPO, PLUTO e PAPERINO
Quello che voglio ottenere è l'elenco degli UID che sono presenti nelle tabelle PIPPO, PLUTO e PAPERINO ovvero:
Codice PHP:
-------+-----+
| 1 | 1 |
| 2 | 2 |
-------+-----+
Fare una cosa così ovviamente mi tira fuori tutti gli UID che sono presenti anche nella tabella ACCOUNT
Codice PHP:
SELECT * FROM ACCOUNT
LEFT JOIN PIPPO ON PIPPO.uid = ACCOUNT.uid
LEFT JOIN PLUTO ON PLUTO.uid = ACCOUNT.uid
LEFT JOIN PAPERINO ON PAPERINO.uid = ACCOUNT.uid
Fare così funziona ma non mi piace e volevo trovare qualcosa di più efficiente:
Codice PHP:
SELECT * FROM ACCOUNT
WHERE
ACCOUNT.uid IN (SELECT uid FROM PIPPO) OR
ACCOUNT.uid IN (SELECT uid FROM PLUTO) OR
ACCOUNT.uid IN (SELECT uid FROM PAPERINO)
Dove sbaglio? :\