Ho due tabelle nel mio database MySQL, uno è una biblioteca di tutti i libri presenti nel database, e l'altro è che contiene le singole righe corrispondenti a cui libri sono nella libreria di un utente.MySQL sinistra outer join, escludere gli elementi a seconda tavola appartenenti a utenti
Ad esempio:
Table Library
`id` `title`...
===== ===========
1 Moby Dick
2 Harry Potter
Collection Tavolo
`id` `user` `book`
===== ====== =======
1 1 2
2 2 2
3 1 1
Quello che voglio fare è eseguire una query che mostrerà tutti i libri che sono non nella raccolta di un utente. Posso eseguire la query per mostrare tutti i libri non in collezione qualsiasi dell'utente:
SELECT *
FROM `library`
LEFT OUTER JOIN `collection` ON `library`.`id` = `collection`.`book`
WHERE `collection`.`book` IS NULL
Questo funziona bene per quanto posso dire. L'esecuzione di questo in PHPMyAdmin comporterà la pubblicazione di tutti i libri non presenti nella tabella di raccolta.
Tuttavia, come faccio a limitare che a un certo utente? Ad esempio, con i dati fittizi di cui sopra, voglio libro 1 al risultato se l'utente 2
esegue la query, e nessun libro se l'utente 1
esegue la query.
La semplice aggiunta di uno AND user=[id]
non funziona e con la mia conoscenza estremamente limitata delle dichiarazioni JOIN
non riesco a ottenere alcun risultato.
Inoltre, l'ID dei risultati restituiti (della query mostrata, che non fa ciò che voglio ma funziona) è 0-- come faccio a verificare che l'ID restituito sia quello di library.id
?
si prega di mostrare la struttura della tabella reale e darci l'errore (se presente) che stai incontrando. La tua query menziona un campo chiamato "articolo" che non è nelle descrizioni della tabella. – bpeterson76
Oops-- L'ho lasciato come articolo quando ho copiato e incollato. Dovrebbe essere "libro". Ho cambiato la domanda. –