Aller au contenu

Requete sur 2 tables


arnotw

Sujets conseillés

Bonjour,

j'ai 2 tables :

- une table "revendeurs" de revendeur avec : nom, adresse... et le numero de departement (champ "dept")

- une table "dptf" avec les departements : le numero de departement (champ "num") et son nom (champ "dept")

et je souhaite générer une page du type

Ain :

revendeur 1

revendeur 2 ...

Aisne :

revendeur 3

revendeur 4 ...

... et ainsi de suite pour les departements qui ont des revendeurs

Est-il possible de faire cela en une seule requete et si oui comment ?

Sinon, comment optimiser pour consommer le moins de ressources possibles ?

Je sais le faire avec plusieurs requetes simples, mais je trouve ca plutot lourd !

merci

Arno

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et merci NorSeb,

En allegeant et modifiant un peu la requete, j'ai réussi à arriver à peu près à ce que je veux :

SELECT * FROM revendeurs
LEFT JOIN dptf ON (revendeurs.dept = dptf.num)

Avec ceci, j'ai la liste de tous les revendeurs par departement.

Avec le GROUP BY, je n'ai qu'un enregistrement par departement.

Par contre pour afficher le nom du departement, je n'ai pas le choix, je dois faire une autre requête ?

arno

Lien vers le commentaire
Partager sur d’autres sites

Par contre pour afficher le nom du departement, je n'ai pas le choix, je dois faire une autre requête ?

Normalement non, les infos sont aussi retournées par la requète... Tu as essayé de la "lancer" avec PhpMyadmin ?

Lien vers le commentaire
Partager sur d’autres sites

Oui, j'ai essayé sur phpmyadmin, pas d'erreur, il me retourne la liste avec le departement (en toutes lettres), maintenant c'est juste pour la mise en forme :

Ain :

revendeur 1

revendeur 2 ...

Aisne :

revendeur 3

revendeur 4

...

J'arrive actuellement avec la mise en forme suivante :

revendeur 1 (Ain)

revendeur 2 (Ain)

revendeur 3 (Aisne)

revendeur 4 (Aisne)

Lien vers le commentaire
Partager sur d’autres sites

Il serait sans doute judicieux (c'est ma faute) de retoucher la requète. Que te donne la requète suivante ?

SELECT r.* FROM dptf LEFT JOIN revendeurs r ON (r.dept = dptf.dept)
GROUP BY dptf.dept
ORBER BY dptf.dept

Lien vers le commentaire
Partager sur d’autres sites

SELECT r.* FROM dptf LEFT JOIN revendeurs r ON (r.dept = dptf.dept)
GROUP BY dptf.dept
ORBER BY dptf.dept

... je ne comprends pas la syntaxe du "r.". Cela doit-il correspondre à un champ de table ?

Je n'ai pas testé la requete, j'ai laissé ce boulot au bureau, mais j'essaye dès que possible.

merci

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

pour ton erreur, c'est probablement parce que tu as marqué ORBER avec un B et non pas ORDER avec un D ;-)

Pour ce qui est du "r", c'ets simplement pour renommer la table dans la requete. Quand tu fais revendeurs r, plus loin tu peux utiliser r.* au lieu de revendeurs.*, c'est plus sympa ;-)

Lien vers le commentaire
Partager sur d’autres sites

Merci à vous.

Désolé, j'avais pas vu l'erreur du ORBER. :(

Bon j'ai testé la requete sous phpmyadmin et cela me sort un tableau de 96 enregistrements (alors que ma table "revendeurs" n'en possède que 13) avec tous les champs avec la valeur "NULL" dedans.

Ci-dessous un petit imprim'ecran de mes tables :

table.gif

Merci d'avance, car là je sèche un peu !

arno

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...