Aide - Recherche - Membres - Calendrier
Version complète : help on une requete SQL
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Antoine
Voilà, j'ai plusieurs tables (si si...)

une nommée article, qui contient les articles, une catégorie qui contient les intitulé de chaque catégorie en fonction d'un ID, et enfin, une difficulté qui contient l'intulé difficulté en fonction d'un ID. Dans la table article, j'ai un champ ID_categorie (qui est une FK de la table categorie) et un ID_Difficulte.

Jusque là, rien de difficile. Mais...
Je veux en une requete (et ça doit être possible) récuperer certains champs de la table article, le nom de la difficulte, et enfin, le nom de la categorie.
Pour en récuperer un des deux pas de prob (avec un LEFT JOIN) mais pour les deux "ung, galère, galère"

Je vous met ma requete de jointure qui ne marche pas !

CODE
SELECT DISTINCT article.ID, article.Titre, article.Presentation, article.Date_MAJ, article.DirectURL, Cat.Nom as NomCateg, Diff.Nom As NomDiff FROM `article` , `Categorie` AS Cat, `Difficulte` AS Diff LEFT JOIN `Categorie` ON article.Categorie_ID = Categorie.id LEFT JOIN `Difficulte` ON article.Difficulte_ID = Difficulte.id LIMIT 5


j'obtiens :
ID Titre Presentation Date_MAJ DirectURL NomCateg NomDiff
1 Titre1 Pr‚sentation1 0000-00-00 NULL CSS d‚butant
2 Titre2 Pr‚sentation2 0000-00-00 NULL CSS d‚butant
1 Titre1 Pr‚sentation1 0000-00-00 NULL CSS interm‚diaire
2 Titre2 Pr‚sentation2 0000-00-00 NULL CSS interm‚diaire
1 Titre1 Pr‚sentation1 0000-00-00 NULL CSS avanc‚
(les virgules c'est ""normal"")

Voilà, j'espere trouver de l'aide ici biggrin.gif
qwix
Tu aurais pas un schéma plus tôt car là, j'ai du mal... :oops:
Antoine
Je veux récuperer par une requete sur la table bleue, tous les champs de celles-ci (*) le nom de la table verte (lié par l'id) et le nom de la table rouge (lié par ID)
liguorien
salut,

cette requête devrait te donner une piste biggrin.gif
CODE
SELECT

  articles.id,

  articles.contenu,

  category.label,

  difficulty.label

FROM articles a

  LEFT JOIN difficulty ON difficulty.id = articles.diff_id

  LEFT JOIN category ON category.id = articles.cat_id

WHERE

  difficulty.id=2

  AND

  category.id=1;


smile.gif
qwix
Quelque chose dans ce genre là non ? [quote] SELECT article.id, article.contenu, category.label, difficulte.label FROM article, difficulte, categorie WHERE (article.categorie_ID = categorie.categorie_ID) AND (article.difficulte_ID = difficulte.difficulte_ID) [/quote] J'avoue que je ne voit pas vraiment pourquoi tu utilise un left join car à mon avis tu n'as pas besoin de résultats NULL. Désolé si je répond une grosse connerie, je suis mort là :oops:
Thanh
+1 pour Qwix. Une jointure toute simple smile.gif
qwix
Merci solo wink.gif
Sur ce +1 je file au lit me regarde un DVD de star wars ha ha geek powaaaaaaaaaa :mrgreen:
liguorien
ça dépend vraiment de la structure de la table, si les champ contenant les clés étrangère peuvent être NULL, les résultats seront corrumpu (il manquera les enregistrement dont la clé étrangère est manquante). Sinon, +1 pour qwix :mrgreen:
Thanh
+1 pour Liguo. :mrgreen: :arrow:
qwix
Garçon, la même chose pour moi :mrgreen:
Antoine
Je vais voir si ça marche ce soir, je ne suis pas sur mon PC...
Antoine
Merci bcp...

Elle est pas belle ma requete ?
CODE
SELECT article.id, article.titre, article.presentation, article.date_maj, article.directurl, article.apublier, categorie.id AS IDCateg, categorie.nom AS NomCateg, difficulte.id AS IDDiff, difficulte.nom AS NomDiff, utilisateur.nom AS NomUtilisateur, utilisateur.prenom AS PrenomUtilisateur, utilisateur.mail AS MailUtilisateur, utilisateur.site AS SiteUtilisateur FROM `article`, `categorie`, `difficulte`, `utilisateur` WHERE article.categorie_id = categorie.id AND article.difficulte_id = difficulte.id AND article.utilisateur_id = utilisateur.id LIMIT 5
Thanh
Il te manque deux trois coups d'alias est zou!
Antoine
non pas d'alias car la requete est générée par un tableau de configuration contenant le nom des tables et de leurs champs (ce qui m'évite de tripatouiller dans le code si je change de table)
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.