Bonjour.
J'aimerai refaire un point avec les habitués du SQL et de la théorie des ensembles.
J'ai actuellement un problème avec mon moteur de base de données. (HyperFile)
Je vais d'abord poser le contexte :
- Deux fichiers : FactureLigne et _ArcFactureLigne (un fichier et son archive)
- Les structures des deux fichiers sont strictement identiques
- Ces fichiers contiennent respectivement 316 FactureLigne et 0 _ArcFactureLigne (fichiers vidés pour l'exemple)
- La requête
me renvoie 316 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM FactureLigne- La requête
me renvoie 0 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM _ArcFactureLigne- La requête
me renvoie 256 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT FactureLigne_Qte20, FactureLigne_PxNetHT FROM FactureLigne- La requête
me renvoie 316 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM FactureLigne UNION ALL SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM _ArcFactureLigne
Jusqu'ici pas de problème, tout est cohérent.
Mon problème maintenant :
La requêtedevrait pour moi renvoyer 316 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM FactureLigne UNION SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM _ArcFactureLigne
C'est à dire :
- Les lignes de FactureLigne (316 enreg)
- Auquelles on ajoute les lignes de _ArcFactureLigne (0 enreg)
- et à cet ensemble de données résultat, on retire l'intersection de FactureLigne et _ArcFactureLigne (soit 0 lignes, pour ne pas les prendre deux fois)
Ce qui me chagrine, c'est que le moteur ne me renvoie que 256 lignes, soit le résultat de la requête suivante :
Donc voici ma question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT DISTINCT * FROM ( SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM FactureLigne UNION ALL SELECT FactureLigne_Qte20, FactureLigne_PxNetHT FROM _ArcFactureLigne )
Qui a raison ?
Partager