begin process at 2012 05 27 00:25:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

Problème de requête...... helppp


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de requête...... helppp

lundi 20 février 2006 à 17:36:36 | Problème de requête...... helppp

emmanuel9

Bonjour à tous,

J'ai un problème de requête sur lequelle je cale depuis qq heures, j'ai 3 tables :

Table Validation Frais
 
frais_id | validateur_id
186        <null>   
186        1
186        2
 
Table Frais
 
id | personne_id | export_comptable_bool
186    1                    1
 
Table Personne
 
id | groupe_id
1     1


et en faite je voudrais récupérer 1) tous les frais qui ont validateur_id = 1 et 2) tous les frais qui ont export_comptable_bool = 1

donc j'ai fais :

S"SELECT * FROM FRAIS,PERSONNE,VALIDATION_FRAIS WHERE "
S"FRAIS.PERSONNE_ID = PERSONNE.ID AND " // jointure
S"FRAIS.ID = T1.FRAIS_ID AND " // jointure
S"((FRAIS.EXPORTE_COMPTABLE_BOOL = 1 ) OR (VALIDATEUR_ID = 1) AND "
S"PERSONNE.GROUPE_ID = 1 "


mais il me sort 3 frais parceque la jointure me donne :

Super Table
 
frais_id | validateur_id | personne_id | export_comptable_bool | groupe_id
186         <null>                1                    1                                       1
186        1                         1                     1                                       1
186        1                          1                    1                                       1


Il me fait sort 3 frais parceque dans la requête j'ai ((FRAIS.EXPORTE_COMPTABLE_BOOL = 1 ) OR (VALIDATEUR_ID = 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'.

Voila si qq avait une idée sur la question....

Par avance, merci.






lundi 20 février 2006 à 20:06:39 | Re : Problème de requête...... helppp

nhervagault

Administrateur CodeS-SourceS
salut SELECT max(frais_id ), validateur_id ,max( personne_id ), max(export_comptable_bool) ,max (groupe_id) FROM FRAIS,PERSONNE,VALIDATION_FRAIS WHERE " FRAIS.PERSONNE_ID = PERSONNE.ID AND " // jointure FRAIS.ID = T1.FRAIS_ID AND " // jointure ((FRAIS.EXPORTE_COMPTABLE_BOOL = 1 ) OR (VALIDATEUR_ID = 1) AND PERSONNE.GROUPE_ID = 1 GROUP BY validateur_id regarde le group by. Mais je crois qu'il avale les nulls. C'est pas sur.
mardi 21 février 2006 à 00:14:37 | Re : Problème de requête...... helppp

fabrice69

Administrateur CodeS-SourceS
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


Romelard Fabrice (Alias F___)
mardi 21 février 2006 à 11:48:12 | Re : Problème de requête...... helppp

emmanuel9

Tous d'abord, merci de vos réponse,

je précise qu'il y a une erreur à ce niveau : S"FRAIS.ID = VALIDATION_FRAIS.FRAIS_ID AND " // jointure

et ici :

frais_id | validateur_id | personne_id | export_comptable_bool | groupe_id
186         <null>                1                    1                                       1
186        1                         1                     1                                       1
186        2                          1                    1                                       1

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_ID =1) AND "
 S"PERSONNE.GROUPE_ID = 1 "

Est ce que ca vous parait jouable ?



mardi 21 février 2006 à 11:58:26 | Re : Problème de requête...... helppp

emmanuel9

Pour le groupe by est ce que ca risque pas de poser des problèmes si je met MAX à tous les champs ? il va me selectionnez la valeur la plus haute ?
mardi 21 février 2006 à 11:59:48 | Re : Problème de requête...... helppp

emmanuel9

En faite dans mon jeux de resultat final ce qu'il faudrait c'est enlever tous les champs qui ont les mêmes FRAIS.ID
mardi 21 février 2006 à 12:07:25 | Re : Problème de requête...... helppp

emmanuel9

Quoique je sais pas, parceque je selectionne aussi VALIDATEUR_ID de la table VALIDATION_FRAIS ....


Cette discussion est classée dans : id, validateur, bool, frais, comptable


Répondre à ce message

Sujets en rapport avec ce message

Problème de requête... [ par emmanuel9 ] Bonjour à tous, J'ai un problème avec les requêtes Sql et je cale : J'ai une table Personne avecid | exporte |1   12   1et une table Validation_Perso Requête, demande d'avis [ par emmanuel9 ] Bonjour à tous, J'ai un problème avec une requête sur lequelle j'ai trouver une solution mais je voudrais avoir votre avis pour être sur que ma soluti problème de requête [ par emmanuel9 ] Bonjour à tous, J'ai un problème de requête : J'ai la table CHAINE : validateur_id | ordre | groupe_id |  autorise1                   &n supprimer les enregistrements uniques [ par slak ] Salut J'ai une table avec des champs id, url, date, timele champs id accept les doublonsje voudrai supprimer tout les enregistrements avec le id uniqu Problème LEFT JOINT et champs en double ! [ par dami27 ] Bonjour à tous ! J'ai un problème et je ne sais pas comment le résoudre... Voici ma requete : SELECT monchampFROM annonce  LEFT JOIN annonce_rub1 ON ( Grosse Requête.... [ par nounours21_6 ] Bonjour,voila, je bloque sur une requete depuis quelques jours...En faite, un événemet peut etre lié a une ou plusieur villesdonc on a trois tablesdb_ Requete Php/MySQL [ par flopad ] Bonjour,je dois développer une "appli" en php/sql. J'ai un masque de saisie qui me permet d'entrer des infos dans une de mes bdd. Seulement, chaque él requete avec IF [ par gstrit ] Bonjour,J'aimerais faire une requete SQL avec un WHERE conditionel. Pour cela il faut une condition IF dans la requete.Je voudrais faire un truc du ge requete qui fonctionne en local et pas en distant [ par gomoz ] Voici la coupable :<span class="syn update avec select avec group by ... ouille :-/ [ par loic72 ] bonsoir,j'ai une question pour ceux qui métrisent les requete update aliant les select qui utilisent les group by?Je m'explique. Voici ma requete vous


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,973 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales