liste générée a partir de champs contenus dans 2 tables - SQL/NoSQL - Programmation
Marsh Posté le 25-07-2005 à 17:33:18
"or je souhaite pouvoir recupérer TOUS les ingés qui appartiennent à la BD 'OMEGA'., y compris ceux qui ne se trouvent pas encore dans la table formulaire_gap"
=> LEFT JOIN (jointure externe)
Sinon, plutôt que de faire des do ... while, fais des while tout court, c'est plus logique !
Et enfin, je vois pas dans ton code où tu affiches les infos de la requête req3 ... et tu mélanges dans le code l'affichage d'infos de req2 avec une infos de la 1ère ligne de req3 ( => echo $result3['date_entree'] ).
Relis ton code, et réécris-le plus proprement.
PS: évite les SELECT * et tape plutôt les noms de champs, c'est plus lisible et ça empêche de faire des erreurs.
edit: voici en gros la requête qu'il te faut utiliser (et il n'y aura donc qu'un seul while dans ton code pour afficher les données):
Code :
|
Marsh Posté le 25-07-2005 à 17:48:22
desperado007 : Ton post n'incite pas à la lecture.
Si tu as un pb SQL, pas besoin de fournir un infect mélange SQL / PHP / HTML.
=> Réduire le problème avant de l'exposer.
Sinon, je crois que tu as une réponse avec le LEFT JOIN de Beegee, qui a eu plus de courage que moi -- c'est fin de journée, hein.
Marsh Posté le 26-07-2005 à 09:07:52
héhé dsl pour le pavé, je voulais juste essayer d'etre le plus précis possible
En tout cas merci à Beegee, sa requête a l'air de bien fonctionner!!
Marsh Posté le 26-07-2005 à 09:11:39
Une question toute bete, si jamais je dois taper dans 3 tables plutot que 2, il faudra que jai recours à LEFT JOIN à nouveau?:
SELECT f_bd.nom, f_bd.prenom, f_gap.date_entree
FROM formulaire_bd f_bd
LEFT JOIN formulaire_gap f_gap
LEFT JOIN formulaire_gap f_rrh
ON f_bd.codeing=f_gap.codeing
WHERE f_bd.bd ='OMEGA';
c possible?
Marsh Posté le 26-07-2005 à 09:35:15
je me suis planté, la 4eme ligne c
LEFT JOIN formulaire_rrh f_rrh
et pas
LEFT JOIN formulaire_gap f_rrh
...
Marsh Posté le 26-07-2005 à 10:40:48
oui c'est possible, mais veille à bien mettre "ON toto = tata" pour chaque LEFT JOIN.
Marsh Posté le 26-07-2005 à 10:56:13
en fait je me suis rendu compte que le LEFT JOIN ne m'aidait pas beaucoup pour ce que je veux faire avec cette 3eme table ...
je me suis resolu à faire 2 requetes séparemment, peut etre que c possible avec une seule mais j'y arrive pas...
voilà g donc cette requete pour lier 2 tables:
SELECT f_bd.bd, f_bd.nom, f_bd.prenom, f_gap.date_entree
FROM formulaire_bd f_bd LEFT JOIN formulaire_gap f_gap ON f_bd.codeing=f_gap.codeing
WHERE f_bd.bd ='OMEGA'
et celle là pour récupérer les données de la 3eme table formulaire_transfert:
SELECT f_trans.bd, f_trans.nom, f_trans.prenom, f_trans.bd_arrivee, f_trans.motif_trans
FROM formulaire_transfert f_trans
WHERE f_trans.bd ='OMEGA';
j'ai bien essayé de mettre un UNION pour obtenir le resultat dans une seule requête, mais en vain.
Marsh Posté le 25-07-2005 à 16:40:19
Bonjour,
Voici mon probleme: je dois générer une liste d'ingénieur dans un fichier Excel.
Cette liste contient des données issues de 2 (voir 3) tables différentes:
J'arrive a generer ce fichier excel, mais les données sont melangées; je m'explique:
Je veux récupérer:
"nom", "prenom" et "codeing" dans la table fomulaire_bd.
"date_entree" dans la table formulaire_gap
Il faut savoir qu'un ingénieur a un codeing unique.
les premières données saisies sont celles du formulaire_bd, puis le formulaire_gap est alors rempli.
Cependant, les données d'un ingénieur n'ont as nécessairement été saisies dans le formulaire_gap. --> mais il faut cependant que je puisse inclure dans la liste les ingnieurs dont le formulaire_gap n'a pas encore été saisi.
Ainsi, je veux pouvoir générer une liste de tous les ingénieurs contenus dans ces 2 tables (qui ont toutes 2 le champ "codeing" propre à 1 seul ingénieur).
J'espère avoir été suffisemment clair...
Voici le tableau que j'obtiens:
les 5 1eres lignes sont correcte, elles correspondent à la requete "req", les dates ne sont pas melangées.
Les lignes suivantes quant à elles, recuperent les infos des requete "req2" et "req3", et là c le bordel.. tout se melange...
Voilà le code:
(A noter que ce code html sera converti en fichier Excel)
Je précise un truc:
en faisant ça
SELECT *
FROM formulaire_bd f_bd INNER JOIN formulaire_gap f_gap ON f_bd.codeing=f_gap.codeing
WHERE f_bd.bd ='OMEGA'
" );
la condition " ON f_bd.codeing=f_gap.codeing " va limiter la liste aux ingés qui se trouvent dans les 2 tables... or je souhaite pouvoir recupérer TOUS les ingés qui appartiennent à la BD 'OMEGA'., y compris ceux qui ne se trouvent pas encore dans la table formulaire_gap
Ma question: quelle requete sql dois-je faire pour pouvoir récupérer les données propres a un ingénieur dans les tables, sans que tout se melange, et sans avoir de doublons dans ma liste?