Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2010, 14h57   #1
Membre du Club
 
Sylvain
Inscription : avril 2002
Messages : 132
Détails du profil
Informations personnelles :
Nom : Sylvain
Localisation : Canada

Informations forums :
Inscription : avril 2002
Messages : 132
Points : 57
Points : 57
Envoyer un message via MSN à Sylvain245
Par défaut requete ne ramenant pas tout les resultats

Bonjour,

Sur mon site, ont peut voir les jeux d'un membre, ainsi que les personnages qu'il possède, etc.

Donc, je voudrait afficher toutes les informations des jeux auxquels il joue, ainsi que les informations des personnages reliés. A savoir, un personnage évolue sur un serveur, qui lui correspond a un jeux (plusieurs serveurs pour un jeux), et que l'utilisateur peu jouer a plusieurs jeux.

Voila un petit bout de ma structure de bdd : en souligner les noms de table, suivit des champs.

user
-useID

user_game
- usgaUseID
- usgaGamID

game
- gamID
- gamName

server
- serID
- serGamID

character
- chaID
- chaUseID
- chaSerID
- chaName

Avec une requête du genre, j'obtiens la liste des jeux auquel il joue :
Code :
1
2
3
4
5
6
7
8
9
 
SELECT `gamName` 
FROM `user_game` 
   LEFT OUTER JOIN `game` 
      ON `usgaGamID` = `gamID` 
   LEFT OUTER JOIN `user` 
      ON `useID` = `usgaUseID` 
WHERE `usgaUseID` = 30 
ORDER BY `gamName` ASC
Exemple de résultat désirer :
-gamNameA chaNameA
-gamNameA chaNameB
-gamNameB (aucun personnage)
-gamNameC (aucun personnage)
-gamNameD chaNameA
-gamNameE (aucun personnage)
...

Voila, merci


Cela dit, comment accéder au détails des personnages également
Sylvain245 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 15h47   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 529
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 529
Points : 3 521
Points : 3 521
Saluton,
Je crains que ce que tu veuilles faire ne ressemble à une requête récursive. Or, MySQL ne sait pas faire ce type de requêtes.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 17h32   #3
Membre du Club
 
Sylvain
Inscription : avril 2002
Messages : 132
Détails du profil
Informations personnelles :
Nom : Sylvain
Localisation : Canada

Informations forums :
Inscription : avril 2002
Messages : 132
Points : 57
Points : 57
Envoyer un message via MSN à Sylvain245
Bonjour,

Merci bien, en effet commet je ne suis pas un pro de MySql, j'essayais d'obtenir un résultat du genre avec les différents type de jointure, je ne savais pas pour les requêtes récursive et MySQL.

Il va donc falloir que je fasses en 2 requêtes différentes, ca ne devrait pas poser problème c'est très simple.
Sylvain245 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 23h15   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Cette requete vous donne-t-elle ce que vous voulez ? :
Code sql :
1
2
3
4
5
6
7
8
 
SELECT gamName, chaName
FROM user_game
INNER JOIN game ON game.gamID = user_game.usgaGamID 
INNER JOIN Server ON server.serGameID = user_game.usgaGameID
LEFT OUTER JOIN character ON character.chaSerID = server.serID 
WHERE user_game.usgaUseID = 30
ORDER BY gamName, chaName

Dans la requete que vous postez, je ne comprend pas pourquoi vous mettez une jointure externe entre user_game et game, je suppose que vous avez une contrainte d'intégrité entre ces deux tables ?

De plus, je ne comprend pas pourquoi vous faites une jointure avec user, cette table ne vous sert a rien dans votre requete...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h17.


 
 
 
 
Partenaires

Hébergement Web