arnotw Posté 22 Février 2007 Posté 22 Février 2007 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
NorSeb Posté 23 Février 2007 Posté 23 Février 2007 Bonjour, Essaye la requète suivante : SELECT r.* FROM revendeurs r LEFT JOIN dptf ON (r.dept = dptf.dept)GROUP BY dptf.deptORBER BY dptf.dept
arnotw Posté 23 Février 2007 Auteur Posté 23 Février 2007 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 revendeursLEFT 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
NorSeb Posté 23 Février 2007 Posté 23 Février 2007 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 ?
arnotw Posté 23 Février 2007 Auteur Posté 23 Février 2007 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)
NorSeb Posté 23 Février 2007 Posté 23 Février 2007 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.deptORBER BY dptf.dept
arnotw Posté 24 Février 2007 Auteur Posté 24 Février 2007 SELECT r.* FROM dptf LEFT JOIN revendeurs r ON (r.dept = dptf.dept)GROUP BY dptf.deptORBER 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
arnotw Posté 26 Février 2007 Auteur Posté 26 Février 2007 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
Jeromnimo Posté 26 Février 2007 Posté 26 Février 2007 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 ;-)
arnotw Posté 28 Février 2007 Auteur Posté 28 Février 2007 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 : Merci d'avance, car là je sèche un peu ! arno
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant