Aller au contenu

Requete sur 2 tables


Sujets conseillés

Posté

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

Posté

Bonjour,

Essaye la requète suivante :

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

Posté

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

Posté
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 ?

Posté

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)

Posté

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

Posté

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

Posté

Bon, j'ai testé la requete et ya une erreur :

#1064 - Erreur de syntaxe pres de 'ORBER BY dptf.dept LIMIT 0, 30' a la ligne 3

Posté

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 ;-)

Posté

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

Veuillez vous connecter pour commenter

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



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