0
votes

Trouver toutes les entités par liste imbriquée qui n'a pas de valeur

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;


0 commentaires

4 Réponses :


0
votes

Vous pouvez essayer d'utiliser une sous-requête corrélée xxx


0 commentaires

0
votes

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,....)


0 commentaires

0
votes

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)


0 commentaires

0
votes

I Recommander n'existe pas à cet effet: xxx

pourquoi est ne pas exister mieux que pas dans ? Raison simple: pas dans ne fait pas ce que vous attendez quand toute valeur renvoyée par la sous-requête est null . Cela rend simplement dangereux d'utiliser. Bien que vous puissiez filtrer les valeurs null , toujours en utilisant n'existe pas signifie que cela n'est jamais un problème.

Notez également l'utilisation des alias de table et que No rejoindre est nécessaire dans la sous-requête.


1 commentaires

@Antonkolosok. . . Y a-t-il une raison pour laquelle vous avez inaccepté cette réponse?