begin process at 2012 02 14 08:58:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

[mysql]requête jointure sur 3 tables et une clé de liaison


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[mysql]requête jointure sur 3 tables et une clé de liaison

dimanche 9 juillet 2006 à 23:15:15 | [mysql]requête jointure sur 3 tables et une clé de liaison

Sedilbur

Bonjour à tous,
Je viens aujourd'hui à vous pour vous demander de l'aide car je bloque au niveau d'une rêquete SQL.

Je vous expose la situation pour mieux vous expliquer mon problème

J'ai 3 TABLES: (je vous épargne les types etc... et je vais à l'essentiel)

  • table1 = stats1 => 3 champs ('rank', 'point', 'player')
  • table2 =stat2 => 3 champs ('rank', 'point', 'player')
  • table3 = stat3 => 3 champs ('rank', 'point', 'player')
La jointure doit être faite sur le champ player. les champs rank et point des 3 tables sont bien entendu différentes...

Ce que je veux:
Il faut qu'en une requête, je puisse récupérer le contenu des champs rank et point de chacunes des 3 tables grâce à la clée player. Alors déjà, je sais que je peux faire ça avec 3 requêtes différentes, mais c'est justement ce que je veux éviter. Il faut dire que j'ai toujours opté pour cette solution dans le passée...c'est pourquoi, aujourd'hui j'aimerais changer mes habitudes  si bien entendu, ce que je demande est possible (mais je pense bien que oui :p)

Les cas possibles:
  1. Un joueur peut se retrouver dans les 3 tables, comme il pourrait se retrouver dans aucunes des 3 tables.
  2. Un joueur peut se retrouver sur  1, voir 2 tables en même temps.
Voilà, je pense que c'est clair...celà dit, si vous assez des questions n'hésitez pas à me les poser. Il serait bien également que vous expliquiez un peu votre requête...(histoire que je copie pas bêtement quoi )

Mon problème:
Mon problème est simple, je n'arrive pas à réunir les 2 cas...en effet, après de multiples tests: je n'arrive à récupérer les contenus voulus que si et seulement si, le joueur se retrouve dans chacunes des 3 tables.

Voilà à quoi je suis arrivé:

SELECT f.rank as rank_fleet, f.points as points_fleet, p.rank as rank_points, p.points as points_pointq, r.rank as rank_research, r.points as points_research
    FROM stat1 as f, stat2 as p, stat3 as r
    WHERE f.player = 'test'


Bon je sais très bien qu'avec cette requête je suis complètement à l'Ouest mais au moins, j'ai essayé et je dois dire que je n'ai jamais été doué pour ça (d'où mon penchant pour la solution plusieurs requêtes )...
lundi 10 juillet 2006 à 08:49:20 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

3xodius55

salut,

ta requête ne me parait pas fausse à première vue, il faudrait juste que tu fasses des jointures entre tes tables, du style:
and f.joueur=p.joueur
and f.joueur=r.joueur;

J'attends que tu me dises si ça te va ou pas

Tchao


 

lundi 10 juillet 2006 à 09:17:31 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

Paladin2107

Slt T n'as pas de 'AS' au niveau du from pour renommer tes tables. Voici la solution, regarde si elle te conviens peut etre que tu as besoin de jointure comme te la montré la personne précédente. Si tu souhaite renommer tes champs tu peux remettre ta syntaxe Select S1.rank,S1.point,S1.player,S2.rank,S2.point,S2.player,S3.rank,S3.point,S3.player From stats1 S1 ,stats2 S2 ,stats3 S3 Where f.player = 'test';
lundi 10 juillet 2006 à 09:22:37 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

3xodius55

Ah bon, il ne faut pas de AS ?

J'étais persuadé qu'il était optionnel mais pas faux...

On en apprend tous les jours !

 

lundi 10 juillet 2006 à 10:59:24 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

Sedilbur


Très bien je vais tester celà le plus vite possible et je vous tiens au courant...
lundi 10 juillet 2006 à 11:52:05 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

malalam

Administrateur CodeS-SourceS
Hello,


SELECT
f.rank as rank_fleet, f.points as points_fleet, p.rank as rank_points, p.points as points_pointq, r.rank as rank_research, r.points as points_research 
FROM stat1 as f, stat2 as p, stat3 as r
WHERE
f.player = 'test' AND
f.player = p.player AND
p.player = r.player
lundi 10 juillet 2006 à 13:20:41 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

Sedilbur

Voilà j'ai fais des tests...des différentes requêtes que vous avez proposé et donc...

Select S1.rank,S1.point,S1.player,S2.rank,S2.point,S2.player,S3.rank,S3.point,S3.player
From stats1 S1 ,stats2 S2 ,stats3 S3
Where f.player = 'test';


Le problème est que cette requête me retourne les différentes stats seulement si le joueur est dans les 3 tables...si jamais il est seulement dans une seule, la requête me retourne rien

WHERE f.player = 'test' AND
f.player = p.player AND
p.player = r.player

Même problème, la requête me retourne bien les statistiques du joueurs mais seulement si ce dernier est dans les 3 tables.

J'avais essayé celà mais encore une fois ça m'a pas fonctionné

WHERE f.player = 'test' or
f.player = 'test' or
p.player = 'test'

Le problème est qu'il récupère bien les stats du joueur si celui-ci est dans une seule table mais il prend également celui d'un autre.
exemple:
test est dans les 3 tables
moi est dans une seule table

La requête me renvoie les résultats de moi de la table ou il est + les résultats de test dans les deux autres tables

Voilà, j'espère que vous pourez m'aider parce que là, je commence un petit peu à désespérer...


...
lundi 10 juillet 2006 à 14:00:20 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

malalam

Administrateur CodeS-SourceS
Tu as quelle version de mysql ?
lundi 10 juillet 2006 à 14:27:30 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

malalam

Administrateur CodeS-SourceS
Parce que j'avais mal lu ton bin's. Bref essaye :

SELECTrank, point, player
FROM stats1
NATURALLEFTJOIN stats2
NATURALLEFTJOIN stats3
WHERE player ='test'
lundi 10 juillet 2006 à 15:02:38 | Re : [mysql]requête jointure sur 3 tables et une clé de liaison

Paladin2107

SELECT rank, point, player FROM stats1 UNION SELECT rank, point, player FROM stats2 UNION SELECT rank, point, player FROM stats3

1 2 3

Cette discussion est classée dans : points, requête, rank, tables, player


Répondre à ce message

Sujets en rapport avec ce message

requête de non concordance avec jointure 3 tables [ par dubitoph ] ChristopheHé oui, je suis toujours là avec mes angoisses pour mon mémoire.J'ai une base de données MySql qui contient, en autres, une table "interimai [mysql] requête sur plusieurs tables [ par eax ] bonjour à tous, je me posais une question en mysql : lorsque je fais une requête sur 2 tables, comment faire pour avoir les enregistrements n'ayant pa Amélioration requête SQL [ par nounours21_6 ] Bonjour tout le monde,j'ai un petit soucis de requête SQL,j'ai une table de membres que je mets à jours régulièrement afin de créer un graphique d'évo interroger plusieurs tables avec une seule requête [ par bruno3591 ] Bonsoir, Est-il possible de faire une seule requête pour interroger plusieurs tables sans avoir de clé étrangère ? Je voudrais faire au moins 3 sort Requête Multi-tables. Erreur d'ambiguité. [ par xeroxiss ] Bonjour à tous, J'ai un petit soucis avec une requête. Je tourne en rond Je voudrais faire un SELECT sur 3 tables différentes avec un WHERE <font colo requête php sur deux bases [ par bl75013 ] bonsoir, je débute, merci de votre compréhension j'ai deux tables je souhaite faire une requête sur ces 2 tables si dans une de ces tables aucuns rens Calcul d'un rang avec 2 tables [ par Alpha911 ] Bonjour, Je me creuse la tête depuis hier et rien n'en sort ... j'ai 2 tables comme ce qui suit : *********** ************ * JOUEUR * * POI PDO et une erreur de requête [ par fabienfs ] Hello, M'initiant actuellement à PDO avec MySQL, je me pose la question suivante : y a t'il une gestion des erreur en PDO comme avec mysql_query ? Lo petit soucis avec requête sql [ par tif27940 ] Bonjour, voici ma requête: SELECT * FROM personnes WHERE ville = 'paris' AND nom LIKE 'gauthier' OR pnom LIKE 'gauthier' ORDER BY ville, nom, pno problème de requète pour afficher des informations sur les enregistrés [ par msi079 ] salut . j'ai une base de donnée que j'ai nommée autoecole et deux tables candidat et payement . je veux afficher des information issu des deux tables


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,716 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales