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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème avec une requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec une requête

n°1298988
Malta
Posté le 04-02-2006 à 12:43:23  profilanswer
 

Bonjour,
 
Il me semblait que les INNER JOIN ne faisait les liens entre 2 tables que si le lien existait réellement de chaque côté.
(Exemple Commande => Produit, uniquement les produits qui apparaissent dans une commande)
 
Bref, voici ma requête :
 

Code :
  1. $req   = "SELECT U.unite_id, U.unite_name, E.effectif, U.unite_lv, U.unite_att, U.unite_def, U.build_time, U.unite_pic, U.unite_coast
  2.       FROM unite U INNER JOIN effectif E
  3.       ON U.unite_id     = E.unite_id
  4.       AND E.user_id        = ".$_SESSION["id"]."
  5.       AND E.effectif_actif = '1'
  6.       ORDER BY U.unite_lv DESC";


 
Le problème est que lorsque j'effectue cette requête pour un joueur qui n'a qu'une seule unité, il y a 9 réponses.
(en fait je met le résultat de la requête dans un tableau et je fais des echo du tableau).
La première valeure (id=0) est exacte et les 8 autres sont vides, donc je pense bien que c'est un problème de jointure...
 
Pour info, j'ai aussi essayé :
FROM unite U INNER JOIN effectif E,
FROM effectif E INNER JOIN unite U,
FROM unite U RIGHT JOIN effectif E,
FROM effectif E RIGHT JOIN unite U,
FROM unite U LEFT JOIN effectif E,
FROM effectif E LEFT JOIN unite U.
 
Merci.
 

mood
Publicité
Posté le 04-02-2006 à 12:43:23  profilanswer
 

n°1299077
maddraft
Posté le 04-02-2006 à 16:20:19  profilanswer
 

Malta a écrit :

Bonjour,
 
Il me semblait que les INNER JOIN ...
Merci.


 
Salut
 
Il te semble juste.  
 
Je me demande toujours pourquoi MS a inventer cette daube inner... Le (+) sous oracle est tellement plus visuel et allège aussi l'écriture. Mais bon faut s'en accommoder.
 
Je ne pense pas à un problème de jointure... sans le inner join ta requête devient :
SELECT U.unite_id, U.unite_name, E.effectif
, U.unite_lv, U.unite_att, U.unite_def
, U.build_time, U.unite_pic, U.unite_coast                
FROM unite U, effectif E  
Where U.unite_id  = E.unite_id                
AND E.user_id  = ".$_SESSION["id"]."                
AND E.effectif_actif = '1'                
ORDER BY U.unite_lv DESC
 
... mais cela ne devrait rien changer. Je vérifierai la compositon des données.  
 
Sinon dans certain cas l'utilisation du distinct sert à éviter ce genre de problème  
 
@+

n°1299305
couak
Posté le 05-02-2006 à 13:25:47  profilanswer
 

Le (+) de Oracle c'est une jointure externe

n°1299367
maddraft
Posté le 05-02-2006 à 17:17:08  profilanswer
 

oui... je dis pas le contraire.
je dis que que la syntaxe = pour les inner et (+) ou moins pour les right ou les lefts me gavent et que c'est pas lisible... Maintenant on est bien obliger de faire avec :-)


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

  Problème avec une requête

 

Sujets relatifs
problème requête client vers servletProbleme variable de session et requete sql
Problème requête SQLprobleme requete REGEXP
Probleme de requete.[résolu] Requete MySQL : problème d'affichage par catégorie
[ACCESS] probleme cumul sur requeteProblème Requete / Timestamp
Probléme avec une requete[SQL*PLUS] Probleme avec caractere special & dans requete SQL
Plus de sujets relatifs à : Problème avec une requête


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