Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
710 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete sur deux tables !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete sur deux tables !

n°1636513
Supersoub
Posté le 04-11-2007 à 20:04:43  profilanswer
 

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 !  :whistle:  
 
(°-°)

mood
Publicité
Posté le 04-11-2007 à 20:04:43  profilanswer
 

n°1636530
moi23372
Posté le 04-11-2007 à 21:06:56  profilanswer
 

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;

n°1636596
MagicBuzz
Posté le 05-11-2007 à 00:07:12  profilanswer
 

la même chose en utilisant la syntaxe verbeuse des jointures (et ainsi on pige mieux ce qu'il se passe) :

Code :
  1. SELECT p.nom, p.dimension, u_nom_artise, u.prenom, u.nom
  2. FROM photos p
  3. INNER JOIN user u ON u.id = p.user_id
  4. WHERE p.nom = $img

Message cité 1 fois
Message édité par MagicBuzz le 05-11-2007 à 00:07:56
n°1636868
Supersoub
Posté le 05-11-2007 à 15:27:34  profilanswer
 

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 ?

n°1636990
MagicBuzz
Posté le 05-11-2007 à 17:08:35  profilanswer
 

non ça change rien. vu que c'est un AND booléen, ça l'ordre n'a aucune importance.

n°1637214
moi23372
Posté le 05-11-2007 à 21:11:46  profilanswer
 

MagicBuzz a écrit :

la même chose en utilisant la syntaxe verbeuse des jointures (et ainsi on pige mieux ce qu'il se passe) :

Code :
  1. SELECT p.nom, p.dimension, u_nom_artise, u.prenom, u.nom
  2. FROM photos p
  3. INNER JOIN user u ON u.id = p.user_id
  4. WHERE p.nom = $img



 
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é :D).  
 
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.

n°1637546
Supersoub
Posté le 06-11-2007 à 12:57:52  profilanswer
 

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é...  :heink:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete sur deux tables !

 

Sujets relatifs
Requete MySQL sur deux tables liéesAide requete oracle, sum sur 2 tables différentes
[resolu] Probleme de requete sur deux tablesRequete SQL entre 2 tables !
Meme requete sur deux tables differentesprobleme de requete sur 3 tables
requete sur deux tables à optimiser[MySQL] Requête sur 2 tables un peu tordue
Requete sur deux tables[VB .NET] DataGrid et Requete à plusieurs tables...
Plus de sujets relatifs à : Requete sur deux tables !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR