Requete php sur 2 tables - PHP - Programmation
Marsh Posté le 04-07-2009 à 17:18:49
Bonjour,
Je te conseils de faire une jointure =>
SELECT images.img_id AS id_img, commentaire.commentaire_auteur AS com_auteur, commentaire.commentaire_message AS com_msg, image.image_nom AS img_nom
FROM commentaires AS commentaire
LEFT JOIN images AS image
ON commentaire.image_id = image.image_id
WHERE commentaire.commentaire_visible='1'
ORDER BY commentaire.commentaire_id desc
LIMIT 12
-------------------
LEFT JOIN = RIGHT JOIN = JOIN = INNER JOIN
Bon certes il y a des particularités pour l''INNER JOIN" si tu fais des sous-requêtes (requêtes imbriquées ou si tu préfères des requête dans des requêtes).
-------------------
Autre solution de jointure ==>
SELECT images.img_id AS id_img, commentaire.commentaire_auteur AS com_auteur, commentaire.commentaire_message AS com_msg, image.image_nom AS img_nom
FROM commentaires AS commentaire, images AS image
WHERE commentaire.image_id = image.image_id
AND commentaire.commentaire_visible='1'
ORDER BY commentaire.commentaire_id desc
LIMIT 12
-------------------
J'ai utilisé des alias ("AS" ) dans le "SELECT" et "FROM" cela est facultatif.
Dans le "SELECT" j'ai précisé le nom de la table et le nom du champ, cela évite des problèmes si tu as un ou plusieurs champs ayant le même nom (enlève l'ambiguïté).
Dans tes 2 table le champ "image_id" est concerné mais dans ta situation cela n'a aucun effet car c'est un champs qui sert de relation.
Marsh Posté le 04-07-2009 à 17:24:09
select image_id,c......... from commentaires as a,images as b where a.commentaire_visible=1 and b.image_id = a.image_id ;
Marsh Posté le 04-07-2009 à 17:27:46
ReplyMarsh Posté le 04-07-2009 à 18:00:15
merci beaucoup ! j'ai pris la première méthode. ça marche nickel.
Marsh Posté le 04-07-2009 à 19:41:24
jean-michel-nux a écrit : desolé on a du taper la reponse en meme temps |
Ce n'est pas grave mieux vaut 2 réponses qu'aucune .
Marsh Posté le 04-07-2009 à 19:59:43
Citation : LEFT JOIN != RIGHT JOIN != JOIN != INNER JOIN |
Merci de ne pas écrire ce genre de "passe droit" à un débutant qui finira inévitablement par se tirer une balle dans le pied
Marsh Posté le 06-07-2009 à 21:54:07
Je préconise la première solution.
Elle est beaucoup plus rapide à exécuter et beaucoup plus clair quand tu as beaucoup de liaisons.
Marsh Posté le 04-07-2009 à 16:13:45
Bonjour,
J'ai un petit souci de requete.
J'ai 2 tables.
Table commentaires avec les champs : image_id, commentaire_auteur, commentaire_message, commentaire_visible, commentaire_id
Table images avec les champs : image_id, image_nom
Je voudrais extraire : image_id, commentaire_auteur, commentaire_message, image_nom
avec comme critère commentaire_visible="1"
J'ai commencé comme ça
$requete="SELECT * FROM commentaires WHERE commentaire_visible='1' ORDER BY commentaire_id desc LIMIT 12";
et ça marche mais il faut ensuite que j'extraie image_nom
Je crois qu'il faut une jointure mais je ne sais pas comment l'écrire dans un cas comme ça