Requete sur deux tables ! - SQL/NoSQL - Programmation
Marsh Posté le 04-11-2007 à 21:06:56
SELECT p.nom, p.dimension, u.nom_artiste, u.prenom, u.nom
FROM photos p, user u
WHERE p.user_id = u.id
AND p.nom = ".$img;
Marsh Posté le 05-11-2007 à 00:07:12
la même chose en utilisant la syntaxe verbeuse des jointures (et ainsi on pige mieux ce qu'il se passe) :
Code :
|
Marsh Posté le 05-11-2007 à 15:27:34
Je pensais vraiment avoir essayé ça
SELECT p.nom, p.dimension, u.nom_artiste, u.prenom, u.nom
FROM photos p, user u
WHERE p.user_id = u.id
AND p.nom = ".$img;
mais j'avais peut-être interverti :
WHERE p.nom = ".$img;
AND p.user_id = u.id
Ca change tout ?
Marsh Posté le 05-11-2007 à 17:08:35
non ça change rien. vu que c'est un AND booléen, ça l'ordre n'a aucune importance.
Marsh Posté le 05-11-2007 à 21:11:46
MagicBuzz a écrit : la même chose en utilisant la syntaxe verbeuse des jointures (et ainsi on pige mieux ce qu'il se passe) :
|
attention que la clause INNER JOIN n'existe pas sur tous les SGBD (exemple, il faut avoir la version ORACLE 9i Release 2 pour avoir cette clause) et oracle n'a toujours pas la clause LEFT OUTER JOIN. Donc à utiliser avec modération, surtout quand on est pas certain de la version qu'on utilisera en production (ça m'est déjà arrivé ).
Sinon, généralement, la clause INNER JOIN est plus performante puisque la jointure est faite avant le produit cartésien complet sur toute les tables. Donc si on a l'occasion de l'utiliser, vaut mieux le faire pour des raisons de performances et d'occupation mémoire.
Marsh Posté le 06-11-2007 à 12:57:52
Citation : non ça change rien. vu que c'est un AND booléen, ça l'ordre n'a aucune importance. |
Je me disais aussi mais j'étais sûr d'avoir essayé...
Marsh Posté le 04-11-2007 à 20:04:43
J'ai un petit probleme avec une requete Mysql...
Je voudrais sélectionner une photo dans ma base de donnée et afficher les infos sur la photo ET sur l'utilisateur qui a mis cette photo en ligne !
J'ai une variable php ($img) qui est le nom de la photo dans la base de données (photos.nom).
Dans la table photos, il y a un champ user_id (photos.user_id) qui est l'id de l'user qui a mis la photo en ligne.
Je voudrais récuperer des infos de la photo (dans la table photos) et des infos de l'user (dans la table user).
Ma requete :
$req = "SELECT p.nom, p.dimension, u.nom_artiste, u.prenom, u.nom FROM photos p, user u WHERE p.nom = ".$img;
Avec cette requete, il y a autant de lignes (dans mes resultats) qu'il n'y a d'users... !?
Or, les noms des photos sont uniques...
Ca doit être très con... ! Mais je bugge un peu !
(°-°)