186 1 1
1 1
Il me fait sort 3 frais parceque dans la requête j'ai ((FRAIS.EXPORTE_COMPTABLE_BOOL <gras>1 ) OR (VALIDATEUR_ID</gras> 1)
Donc forcement tous les frais on export_comptable_bool 1, donc il me sort 3 frais. Comment faire pour avoir tous les frais qui ont validateur_id 1 et tous les frais qui ont export_comptable_bool = 1 en enlevant les doublons ? Je ne peut pas utiliser DISTINCT car mes frais comporte la propriété 'Image'.
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 21 févr. 2006 à 00:14
Bonsoir,
Plutot que de vous donner la requette (bonne ou mauvaise), il est plus intéressant pour vous de savoir comment la construire vous même.
Je vous invite donc a lire l'article suivant qui vous fera mieu comprendre les jointures :
- http://sql.developpez.com/sqlaz/jointures/
PS: il est très pénalisant pour les temps de réponses s'utiliser les requête du type
.... where t1.ch1=t2.ch2
Il faut favoriser les jointures comment
.... from t1 inner join t2 on ch1=ch2
Je ne pense pas que je puisse utiliser un Groupe by car dans ma requete Select je selectionne une vingtaine de champs. Et dans un de ces champs il y a un qui est de type TEXT et je ne sais pas pourquoi on ne peut pas faire de DISTINCT quand on séléctionne un champ de type TEXT. Je pense que ma requête est à peut près bonne mais il y a des doublons, j'ai lu l'article qui parlais du sql et je pense que ce qui a l'air de le plus se rapprocher de mon problème c'est une auto-jointure du type :
S"SELECT T1.ID FROM FRAIS T1 , FRAIS T2, PERSONNE ,VALIDATION_FRAIS WHERE "
S"T1.ID = T2.ID AND " // ici pas bon, séléctionnez tous les frais ou t1.id != t2.id afin d'avoir une instance unique S"T1.PERSONNE_ID = PERSONNE.ID AND "
S"T1.ID = VALIDATION_FRAIS.FRAIS_ID AND " S"((T1.EXPORTE_COMPTABLE_BOOL 1 ) OR (VALIDATEUR_ID1) AND "
S"PERSONNE.GROUPE_ID = 1 "