J'ai 2 tables qui ont une relation many to many; Un individu peut appartenir à plusieurs groupes. Un groupe peut avoir plusieurs individus.Opérateur SQL logique AND pour les zones de bits
Les personnes essentiellement viennent leur ID de clé primaire
groupes ont un ID de clé primaire, IndividualID (identique à l'ID dans le tableau individuel), et un indicateur de bits pour si ce groupe est le groupe principal pour l'individu
En théorie, toutes les entrées d'un individu donné dans la table de groupe, à l'exception d'une seule, doivent être mises à false, car chaque individu doit avoir exactement 1 groupe principal.
Je sais que pour mon ensemble de données actuel, cette hypothèse n'est pas vraie, et j'ai des individus qui ont le drapeau primaire pour TOUS leurs groupes mis à faux.
Je n'arrive pas à générer une requête qui me renverra ces individus.
Le plus proche que j'ai obtenu est:
SELECT * FROM individuel i Groupe LEFT JOIN g SUR g.IndividualID = i.ID OÙ g.IsPrimaryGroup = 0
mais aller plus loin avec SUM ou MAX ne fonctionne pas, car le champ est un champ de bits, et non un numérique.
Des suggestions?
Juste un FYI, si votre base de données prend en charge la clause EXISTS, elle est généralement plus rapide grâce à une meilleure utilisation des index. Voir mon message ci-dessous. – Dylan