Bonjour,
J'ai besoin de récupérer un tableau php constituées de ligne correspondant à des documents.
Pour un besoin spécifique, je dois filtrer ces documents, mais là je me trouve confronté à un besoin que je ne sais pas transcrire en logique, peut être que cela vient de la structure de la base, mais je ne peux pas y toucher. Il me reste toujours la possibilité d'un traitement php, mais comme le nombre de lignes est important, je vais vraiment y perdre en terme d'efficacité.
La structure:
Table des Documents: DOC
avec une clef primaire:
DOC_ID
...
Table Référencement
avec une clef primaire:
DTR_ID
un clef étrangère vers la table DOC
DTR_DOC_ID
une date de suppression en cas de référencement supprimé (sinon NULL).
DTR_DELETE_DATE
...
Un document peut avoir 0 ou plusieurs référencements.
Et vla ti pa qu'aujourd'hui on me demande de lister tous les documents non référencés. Ok pas de problème, je fais un left join et c'est tout bon:
Oui, mais là il y a des petits malins qui passent au travers de la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM DOC INNER JOIN DTR ON DOC.DOC_ID = DTR.DTR_DOC_ID WHERE DTR.DTR_DOC_ID IS NULL ;
Tous les documents qui n'ont que des référencements supprimés. Ils ne représentent qu'un pourcentage très faible, mais doivent être obligatoirement listés, sinon ma requête n'est pas complètement valide...
Et là, pour ce petit nombre de Gaulois, je me sens obligé de passer par des traitements dans des boucles et autres tests enchainés...
En terme logique, je voudrais récupérer tous les documents qui n'ont pas de référencement, ou qui n'ont aucun référencement pas supprimés.
S'il vous plait, dites moi que j'ai raté un cours de logique en SQL et qu'il y a une solution SQL propre pour moi !!!
D'avance merci pour votre aide.
Partager