Probleme de jointure
Marlocq
Messages postés
116
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
voila mon soucis j ai une table date dans laquelle j'ai plusieurs données et qui peut etre lièe a plusieurs heures dans la table heure et une table heure qui est a une donnée heure
ou date 0/n 1/1 heure.
le soucis est comment faire en une seule requête pour n'avoir qu'une seule fois les données relative à la date mais toutes les heures.
Pour le moment je fais ça:
j'ai essayer ça comme requête en utilisant une jointure
Le soucis c'est la redondance d'information dans le retour avec la jointure (je ne sais pas si je suis clair)
le premier me retourne une fois les informations de la date et plusieurs fois les heures
le deuxième retourne toutes les informations de la date pour chaque heure
et ça doit donc foire comme le premier mais que je fais en deux requêtes....
ou date 0/n 1/1 heure.
le soucis est comment faire en une seule requête pour n'avoir qu'une seule fois les données relative à la date mais toutes les heures.
Pour le moment je fais ça:
$req_date_adm = " SELECT date , id_date , h_recup_journa , h_recup_total FROM datebadge WHERE date='$fincs_get' AND id_uti='$idmembres' "; $req_date_admi = $db_conn->query($req_date_adm); while ($r_d_a = $req_date_admi->fetch()) { $id_date = $r_d_a['id_date']; $date = $r_d_a['date']; $h_recup_journa = $r_d_a['h_recup_journa']; $h_recup_total = $r_d_a['h_recup_total']; $req_heure =" SELECT heure FROM heuretat WHERE (id_date='$id_date' and etat='ok') OR (id_date='$id_date' and etat='missio') OR (id_date='$id_date' and etat='oub')"; $reque_heure = $db_conn->query($req_heure); while ($requete_heure = $reque_heure->fetch()) { $heure = $requete_heure['heure']; }
j'ai essayer ça comme requête en utilisant une jointure
$req_date_adm = " SELECT p1.date , p1.id_date , p1.h_recup_journa , p1.h_recup_total , p2.heure FROM datebadge p1 INNER JOIN heuretat p2 ON p1.id_date=p2.id_date WHERE p1.date='$fincs_get' AND p1.id_uti='$idmembres' ";
Le soucis c'est la redondance d'information dans le retour avec la jointure (je ne sais pas si je suis clair)
le premier me retourne une fois les informations de la date et plusieurs fois les heures
le deuxième retourne toutes les informations de la date pour chaque heure
et ça doit donc foire comme le premier mais que je fais en deux requêtes....
A voir également:
- Probleme de jointure
- Jointure excel - Guide
- Pb de jointure ✓ - Forum MySQL
- Problème jointure mysql (php) ✓ - Forum Webmastering
- [Excel,vba,ado] faire une jointure de tables - Forum VB / VBA
- Jointure en php - Forum PHP
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
non, ce n'est pas clair. tu ne nous donnes même pas la liste des champs des deux tables.
le plus important à clarifier, je pense, c'est "avoir une seule fois les données relative à la date mais toutes les heures".
le mieux c'est que tu donnes un exemple avec quelques données dans les deux tables.
qu'obtiens-tu avec la requête que tu fais?
que veux-tu obtenir à la place?
une autre façon de clarifier, c'est d'expliquer à quoi servent ces données, et ce que tu veux faire avec le résultat.
par ailleurs, il est possible que tu puisses arriver à faire ce que tu veux en structurant tes données autrement, ou en écrivant ton programme autrement. tu ne nous montres pas la partie de ton programme qui utilise les données.
non, ce n'est pas clair. tu ne nous donnes même pas la liste des champs des deux tables.
le plus important à clarifier, je pense, c'est "avoir une seule fois les données relative à la date mais toutes les heures".
le mieux c'est que tu donnes un exemple avec quelques données dans les deux tables.
qu'obtiens-tu avec la requête que tu fais?
que veux-tu obtenir à la place?
une autre façon de clarifier, c'est d'expliquer à quoi servent ces données, et ce que tu veux faire avec le résultat.
par ailleurs, il est possible que tu puisses arriver à faire ce que tu veux en structurant tes données autrement, ou en écrivant ton programme autrement. tu ne nous montres pas la partie de ton programme qui utilise les données.
table date:
id_date / date / h_rec_journa / h_rec_total /
1 / 1578009600 / 15 / -39
2 / 1582070400 / 15 / -24
table heure:
id_heure / heure / id_date
1 / 476 / 1
2 / 481 / 2
3 / 724 / 1
4 / 742 / 1
5 / 979 / 1
6 / 632 / 2
7 / 714 / 2
pour la première:
date hrj hrt heure heure heure heure
1578009600 / 15 / -39 / 476 / 724 / 742 / 979 (dans une table après incrémentation des td etc. )
pour la deuxième:
date hrj hrc heure
1578009600 / 15 / -39 / 476
1578009600 / 15 / -39 / 724
1578009600 / 15 / -39 / 742
1578009600 / 15 / -39 / 979
donc ce que je veux c'est d'un coté n'avoir qu'une fois les données relative à la date et toutes les heures liées à cette date comme sur le premier retourd (je ne sais pas comment créer un affichage plus clair sur se forum...)
id_date / date / h_rec_journa / h_rec_total /
1 / 1578009600 / 15 / -39
2 / 1582070400 / 15 / -24
table heure:
id_heure / heure / id_date
1 / 476 / 1
2 / 481 / 2
3 / 724 / 1
4 / 742 / 1
5 / 979 / 1
6 / 632 / 2
7 / 714 / 2
pour la première:
date hrj hrt heure heure heure heure
1578009600 / 15 / -39 / 476 / 724 / 742 / 979 (dans une table après incrémentation des td etc. )
pour la deuxième:
date hrj hrc heure
1578009600 / 15 / -39 / 476
1578009600 / 15 / -39 / 724
1578009600 / 15 / -39 / 742
1578009600 / 15 / -39 / 979
donc ce que je veux c'est d'un coté n'avoir qu'une fois les données relative à la date et toutes les heures liées à cette date comme sur le premier retourd (je ne sais pas comment créer un affichage plus clair sur se forum...)