J'ai des tables nighclub, visiteur et visiteurs_nighclub (beaucoup à plusieurs). J'ai besoin d'obtenir tous les clubs de nuit qui n'ont pas un certain visiteur. strong> Pour obtenir des discothèques qui ont un visiteur que je fais comme ceci: p> WHERE vnc.visitors_id != 3;
4 Réponses :
Vous pouvez essayer d'utiliser une sous-requête corrélée
Utilisez pas dans
SELECT nc.id, nc.name FROM night_club as nc INNER JOIN visitor_night_clubs as vnc ON nc.id = vnc.night_clubs_id WHERE vnc.visitors_id not in( 3,....)
Figure cette sortie
SELECT * FROM night_club WHERE night_club.id NOT IN (SELECT nc.id FROM night_club as nc INNER JOIN visitor_night_clubs as vnc ON nc.id = vnc.night_clubs_id WHERE vnc.visitors_id = 4)
I Recommander pourquoi est Notez également l'utilisation des alias de table et que No n'existe pas code> à cet effet:
ne pas exister code> mieux que
pas dans code >? Raison simple:
pas dans code> ne fait pas ce que vous attendez quand toute valeur em> renvoyée par la sous-requête est
null code>. Cela rend simplement dangereux d'utiliser. Bien que vous puissiez filtrer les valeurs
null code>, toujours en utilisant
n'existe pas code> signifie que cela n'est jamais un problème. P>
rejoindre code> est nécessaire dans la sous-requête. p> p>
@Antonkolosok. . . Y a-t-il une raison pour laquelle vous avez inaccepté cette réponse?