LEFT JOIN complexe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : LEFT JOIN complexe

par riff49 » 14 janv. 2009, 12:12

Ca y'est résolu, en fait il faut créer des Alias pour ceux que ça interesserait.

Donc la requête est :

Code : Tout sélectionner

SELECT id_stocko, numbl_stocko, dateliv_stocko, denom_stocko, numlot_stocko, numbout_stocko, etat_stocko, dispo_stocko, numtec_stocko, datemes_stocko, datesortie_stocko, daterep_stocko, numtecrep_stocko, numpat_stocko, retouras_stocko, departas_stocko, id_pat, nom_pat, u1.id_use AS id1, u2.id_use AS id2, u1.nom_use AS nom1, u2.nom_use AS nom2 FROM tstockoxy LEFT JOIN tpatient ON tpatient.id_pat = tstockoxy.numpat_stocko LEFT JOIN tusers u1 ON u1.id_use = tstockoxy.numtec_stocko LEFT JOIN tusers u2 ON u2.id_use = tstockoxy.numtecrep_stocko
Merci à tous pour votre aide ;)

par furiouslol » 14 janv. 2009, 12:05

Et si tu balance ta requete dans mysql directement ca donne quoi ?

par riff49 » 14 janv. 2009, 11:37

Merci c'est ça mais ça ne fonctionne pas quand je fais :

Code : Tout sélectionner

SELECT id_stocko, numbl_stocko, dateliv_stocko, denom_stocko, numlot_stocko, numbout_stocko, etat_stocko, dispo_stocko, numtec_stocko, datemes_stocko, datesortie_stocko, daterep_stocko, numtecrep_stocko, numpat_stocko, retouras_stocko, departas_stocko, id_pat, nom_pat, u1.id_use, u2.id_use, u1.nom_use, u2.nom_use FROM tstockoxy LEFT JOIN tpatient ON tpatient.id_pat = tstockoxy.numpat_stocko LEFT JOIN tusers u1 ON u1.id_use = tstockoxy.numtec_stocko LEFT JOIN tusers u2 ON u2.id_use = tstockoxy.numtecrep_stocko
et que j'affiche avec :

<?php echo $row_rstraceo2['u1.id_use']; ?>

je n'obtiens aucune donnée !

Une petite idée.

Merci ;)

par furiouslol » 13 janv. 2009, 22:47

Salut

Visiblement faut que tu joigne deux fois la table user, un peu dans ce style la :

Code : Tout sélectionner

SELECT t.id_stocko, t1.nom_use , t2.nom_use FROM tstockoxy t LEFT JOIN tusers t1 ON t1.id_use = t.numtec_stocko LEFT JOIN tusers t2 ON t2.id_use = t.numtecrep_stocko;

par AB » 13 janv. 2009, 21:17

Faudrait suivre les conseils de mise en forme et de renseignements qui s'affichent quand on poste dans le forum sql. Cela serait plus clair, nous permettrait si besoin de faire des test et tu aurais plus de réponses :wink:

LEFT JOIN complexe

par riff49 » 13 janv. 2009, 18:44

Salut :wink:

J'ai besoin d'un peu d'aide pour une requête donc si vous avez un peu de temps, un Grand Merci :wink:

En fait, j'ai une table "tusers" qui contient :
id_use
nom_use

Voici par exemple les deux premiers enregistrements :
1, Dupont, Jean
2, Durand, Pierre

et une autre table tstockoxy qui contient
id_stockoxy
numtec_stockoxy
numtecrep_stockoxy

Voici les deux premiers enregistrements :

1, 1, 2
1, 2, 2

Les champs numtec_stockoxy et numtecrep_stockoxy sont liés à id_use de la table tusers.

Ce que je veux faire c'est afficher un tableau qui reprend les noms des utilisateurs au lieu de leur numéro d'identification, donc si on reprend le même exemple ci-dessus, on obtiendrait :

1, Dupont, Durand
2, Durand, Durand

Avec la requête :

Code : Tout sélectionner

SELECT id_stocko, numbl_stocko, dateliv_stocko, denom_stocko, numlot_stocko, numbout_stocko, etat_stocko, dispo_stocko, numtec_stocko, datemes_stocko, datesortie_stocko, daterep_stocko, numtecrep_stocko, numpat_stocko, retouras_stocko, departas_stocko, id_pat, nom_pat, id_use, nom_use FROM tstockoxy LEFT JOIN tpatient ON tpatient.id_pat = tstockoxy.numpat_stocko LEFT JOIN tusers ON (tusers.id_use = tstockoxy.numtec_stocko) OR (tusers.id_use = tstockoxy.numtecrep_stocko)
Ca ne fonctionne pas car on a pas la distinction entre numtec_stockoxy et numtecrep_stockoxy

Une idée, un conseil un avis ?

Merci :wink: