Requête avec conditions dans des tables differentes (complexes)
Résolu/Fermé
guedo
Messages postés
77
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
10 avril 2019
-
2 févr. 2015 à 09:30
guedo Messages postés 77 Date d'inscription mercredi 26 novembre 2014 Statut Membre Dernière intervention 10 avril 2019 - 5 févr. 2015 à 15:43
guedo Messages postés 77 Date d'inscription mercredi 26 novembre 2014 Statut Membre Dernière intervention 10 avril 2019 - 5 févr. 2015 à 15:43
A voir également:
- Requête avec conditions dans des tables differentes (complexes)
- Table des matières word - Guide
- Oracle liste des tables ✓ - Forum Oracle
- Aucune entrée de table des matières n'a été trouvée. - Forum Word
- Sql lister les tables ✓ - Forum Programmation
4 réponses
jordane45
Messages postés
38273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 novembre 2024
4 695
2 févr. 2015 à 11:44
2 févr. 2015 à 11:44
Bonjour,
Oriente toi vers les JOINTURE.
un truc du genre :
Testes cette requête en direct dans ta BDD et regardes ce que ça te donne
https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
Oriente toi vers les JOINTURE.
un truc du genre :
SELECT ,U.id ,U.groupe ,R.ETAT ,COUNT(R.ETAT) as NB_RDV FROM rdv R LEFT JOIN utilisateur U ON R.IDTEL = U.id GROUP BY U.id,R.ETAT ORDER BY U.groupe,U.id,R.ETAT
Testes cette requête en direct dans ta BDD et regardes ce que ça te donne
https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
guedo
Messages postés
77
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
10 avril 2019
1
5 févr. 2015 à 09:20
5 févr. 2015 à 09:20
Resalut jordane45 et a touts ceux qui sont présents je revient vers vous car j'ai encore un peiti besoin de vos aimables services en effet la requête magique de notre trés cher jordane45 :p me retourne ceci
sauf que moi j'aimerais l'afficher sur mon interface de cette facon
je vous joint ci dessous mon code qui sert d'affichage du tableau
La variable $res correspond au résultat de la requête, le probléme est que j'ai une erreur car les $i+1 n'existent pas forcement en effet imaginons qu'a la deuxième boucle on commence avec i=6 et pour finir je dois aller jusqu'à i = 11 or ce n'est pas forcé que ma variable $res[11] existe, elle s'arrête peut être avant
c'est pourquoi je vous demande de l'aide a ce sujet pour m'aider a remplir le tableau de la maniere sur la photo joint plus haut
Merci d'avance
sauf que moi j'aimerais l'afficher sur mon interface de cette facon
je vous joint ci dessous mon code qui sert d'affichage du tableau
La variable $res correspond au résultat de la requête, le probléme est que j'ai une erreur car les $i+1 n'existent pas forcement en effet imaginons qu'a la deuxième boucle on commence avec i=6 et pour finir je dois aller jusqu'à i = 11 or ce n'est pas forcé que ma variable $res[11] existe, elle s'arrête peut être avant
<table border="2" frame="box" class="table table-striped table-bordered"> <tr> <th>Télepro</th> <th>Absent</th><th>Annuler</th><th>Attente</th><th>Bidon</th><th>Confirmer</th><th>Signe</th> </tr> <?php $res=$_SESSION['res']; $i=0; while($i < count ( $res )) { echo '<tr>'; echo '<td align="center">'.$res[$i]['id'].'</td>'; echo '<td>'.$res[$i]['NB_RDV'].'</td>'; echo '<td>'.$res[$i+1]['NB_RDV'].'</td>'; echo '<td>'.$res[$i+2]['NB_RDV'].'</td>'; echo '<td>'.$res[$i+3]['NB_RDV'].'</td>'; echo '<td>'.$res[$i+4]['NB_RDV'].'</td>'; echo '<td>'.$res[$i+5]['NB_RDV'].'</td>'; echo '</tr>'; $i = $i+6; } ?> </table>
c'est pourquoi je vous demande de l'aide a ce sujet pour m'aider a remplir le tableau de la maniere sur la photo joint plus haut
Merci d'avance
jordane45
Messages postés
38273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 novembre 2024
4 695
5 févr. 2015 à 09:32
5 févr. 2015 à 09:32
Bonjour,
Il te suffit de parcourir les résultat ... et dès que le ID est différent du ID précédent... tu passes à la ligne suivante...
Il te suffit de parcourir les résultat ... et dès que le ID est différent du ID précédent... tu passes à la ligne suivante...
guedo
Messages postés
77
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
10 avril 2019
1
5 févr. 2015 à 10:11
5 févr. 2015 à 10:11
daccord je vais essayer je te tiens au courant si j'ai reussi ou pas
guedo
Messages postés
77
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
10 avril 2019
1
Modifié par jordane45 le 5/02/2015 à 14:27
Modifié par jordane45 le 5/02/2015 à 14:27
voila aprés m'être pencher a fond sur les while et les if j'ai pu arriver a la conclusion que malgres les 10000 boucles que j'ai fait sa n'a eu aucun impact sur la gestion de mon tableau voici la preuve de mon travail.
je pense que vous dirait que je suis fou lol mais au moins je peut dire que j'ai fait preuve de bonne foi et de volonté dans mon travail je vous joint le resultat de la requete ainsi que celui de l'affichage de mon tableau
vous pouvez remarquer que le deuxième identifiant ne s'affiche pas et,
-au lieu de mettre a la première ligne dans la colonne 'Signe' 0 , il me met le 2 qui est censer être dans la deuxième ligne a la colonne 'Absent',
- dans la deuxième ligne première colonne, au lieu de mettre nassima, il met le chiffre 1 qui est censer se trouver sur la même ligne dans la colonne 'Signe' et pour finir, il n'affiche aucun de mes 0
Merci de bien vouloir m'aider et encore merci jordane45
<table border="2" frame="box" class="table table-striped table-bordered"> <tr> <th>Télepro</th> <th>Absent</th><th>Annuler</th><th>Attente</th><th>Bidon</th><th>Confirmer</th><th>Signe</th> </tr> <?php $res=$_SESSION['res']; $i=0; while($i < count ( $res )) { $c=$i; echo '<tr>'; echo '<td align="center">'.$res[$i]['id'].'</td>'; if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']='ABSENT'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } } while($i < count ( $res )){ if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']='ANNULER'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } } while($i < count ( $res )){ if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']='ATTENTE'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } } while($i < count ( $res )){ if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']='BIDON'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } } while($i < count ( $res )){ if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']='CONFIRMER'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } } while($i < count ( $res )){ if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']='SIGNE'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; echo '</tr>'; $i = $i+1; } else{ echo '<td>'.'0'.'</td>'; } } } } } } } } ?> </table>
je pense que vous dirait que je suis fou lol mais au moins je peut dire que j'ai fait preuve de bonne foi et de volonté dans mon travail je vous joint le resultat de la requete ainsi que celui de l'affichage de mon tableau
vous pouvez remarquer que le deuxième identifiant ne s'affiche pas et,
-au lieu de mettre a la première ligne dans la colonne 'Signe' 0 , il me met le 2 qui est censer être dans la deuxième ligne a la colonne 'Absent',
- dans la deuxième ligne première colonne, au lieu de mettre nassima, il met le chiffre 1 qui est censer se trouver sur la même ligne dans la colonne 'Signe' et pour finir, il n'affiche aucun de mes 0
Merci de bien vouloir m'aider et encore merci jordane45
guedo
Messages postés
77
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
10 avril 2019
1
5 févr. 2015 à 15:43
5 févr. 2015 à 15:43
c'est bon mesdames et messieurs voici la solution finale
c'est avec une satisfaction que je poste ma solution tellement je suis heureux d'avoir réussi lol
Encore merci a toutes l'équipe du site et surtout a jordane45 qui a pris du temps pour me répondre.
<table border="2" frame="box" class="table table-striped table-bordered"> <tr> <th>Télepro</th> <th>Absent</th><th>Annuler</th><th>Attente</th><th>Bidon</th><th>Confirmer</th><th>Signe</th> </tr> <?php $res=$_SESSION['res']; $i=0; $c=0; while($i < count ( $res )) { $c=$i; echo '<tr>'; echo '<td align="center">'.$res[$i]['id'].'</td>'; //if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']=='ABSENT'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } //} if($i < count ( $res )){ //if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']=='ANNULER'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } //} if($i < count ( $res )){ //if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']=='ATTENTE'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } //} if($i < count ( $res )){ //if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']=='BIDON'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } //} if($i < count ( $res )){ //if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']=='CONFIRMER'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; $i=$i+1; } else{ echo '<td>'.'0'.'</td>'; } //} if($i < count ( $res )){ // if($res[$i]['id']=$res[$c]['id']){ if($res[$i]['ETAT']=='SIGNE'){ echo '<td>'.$res[$i]['NB_RDV'].'</td>'; echo '</tr>'; $i = $i+1; } else{ echo '<td>'.'0'.'</td>'; } //} } } } } } } ?> </table>
c'est avec une satisfaction que je poste ma solution tellement je suis heureux d'avoir réussi lol
Encore merci a toutes l'équipe du site et surtout a jordane45 qui a pris du temps pour me répondre.
2 févr. 2015 à 11:51
MySQL a répondu: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'U.id
,U.groupe
,R.ETAT
,COUNT(R.ETAT) as NB_' at line 1
2 févr. 2015 à 11:53
2 févr. 2015 à 11:55
2 févr. 2015 à 11:56
2 févr. 2015 à 12:45
je ne connait pas ce style de requête et dans les tuto que j'ai cherche, ils n'expliquent pas mon cas de figure, si tu peut m'aider sa me rendrait un grand service parce que par la suite j'aurais plusieurs requêtes de ce type a accomplir.