Vous avez cette table: RECORD (ID, NOM) SHARE (ID, VALUE)
Si votre moteur SQL supporte LEFT OUTER REJOINT, la meilleure façon est:
SELECT RECORD.* FROM RECORD LEFT OUTER JOIN SHARE WHERE RECORD.ID=SHARE.ID
WHERE SHARE.ID IS NULL
Important
place un index sur SHARE.ID
Comment ça marche:
SQL durée de moteur toute la table RECORD à la recherche d'un dossier de la part, pour chaque enregistrement RECORD si on trouve un dossier « lié » PARTAGEE la clause where est falso, donc l'enregistrement n'est pas inclus dans le jeu de résultats, si aucun enregistrement n'est trouvé dans share, la clause where est vraie et le RECORD. * est inclus dans le jeu de résultats. Cela fonctionne grâce à LEFT OUTER JOIN.
Note:
Une autre façon de faire la même chose est d'utiliser la clause WHERE RECORD.ID NOT IN (SELECT ID DE PART). Faites attention à ce que, selon le moteur sql que vous utilisez, cela peut entraîner de sérieux problèmes de performances car le moteur interne peut exécuter (SELECT ID from Share) une fois par enregistrement dans la table RECORD.
merci beaucoup pour l'expliquer. cela m'aide beaucoup. – riyana