Page 1 sur 1

comment formuler cette requète ?

Posté : 18 févr. 2012, 20:27
par Dev-Debutant
Bonjour,

j'essaie de me faire une petite application comme exercice personnel pour progresser. Je pense avoir l'idée mais j'ai du mal à formuler ma requète pour y arriver.

Je suis en train de me créer un classement de football. Donc j'ai crée une table avec le classement complet avec pour chaque équipe un id.
Il y a une deuxième table pour les journées de championnat. La table a un champ id, un champ numéro de la journée, un champ id de l'équipe domicile et un champ id de l'équipe extérieur.

Je pense à partir de là avoir tout dans ma bdd pour faire ce que je veux.

Mon problème est le suivant :

Je me suis mis un select avec toutes les journées de l'année et à la sélection les matchs s'affichent.
Seulement ma requête se montre complexe pour mon petit niveau.
Je suis parti sur quelque chose comme ça :
$query = 'SELECT journee.day AS \'day\',
				journee.id AS \'id_journee\',
				classement.id,
				classement.name AS name_dom,
				classement.points 
		FROM classement,
			  journee 
		WHERE (journee.id_ext=classement.id)
		AND journee.day='.$_POST['journee_foot'];
Donc la je sais limiter la requète à la journée sélection par le POST mais comment afficher dans un premier temps le nom correspondant à journee.id_dom et à coté le nom correspondant à journee.id_ext dans la meme requete ?

Je ne sais pas si je me suis bien exprimé... Si ce n'est pas le cas j'essaierai d'être plus précis.
D'avance merci à tout ceux qui se pencheront sur mon problème.

Débutant-Dev

Re: comment formuler cette requète ?

Posté : 18 févr. 2012, 22:00
par Ryle
Si j'ai bien compris ce que tu veux, il te faut en fait faire 2 jointures vers ta table classement, l'une pour l'équipe locale et l'autre pour les visiteurs :
$query = "SELECT journee.day AS day,
                                journee.id AS id_journee,
                                dom.id AS id_dom,
                                dom.name AS name_dom,
                                dom.points AS points_dom,
                                ext.id AS id_ext,
                                ext.name AS name_dom,
                                ext.points AS points_ext 
                FROM classement dom, classement ext, journee 
                WHERE journee.id_ext=dom.id
                AND  journee.id_dom=ext.id
                AND journee.day='" . $_POST['journee_foot'] . "'";

Re: comment formuler cette requète ?

Posté : 18 févr. 2012, 23:29
par Dev-Debutant
Donc tu penses qu'il faut que je créé une autre table ?

On ne peut pas créé 2 jointures entre 2 même tables ? Car dans ma table 'journée', j'ai l'id de l'équipe dom et l'id de l'équipe extérieur.
Il faut juste que je prenne le nom correspondant à ces id dans la table 'classement'.

Ca ferait un truc genre journee.id_dom=classement.id AND journee.id_ext=classement.id AND journee.day=$_POST...

Mais ça ne fonctionnerait pas.
Ou alors je mets des le début le nom des équipes avec les id correspondant dans un table que je range en local comme ça je n'ai pas besoin d'une deuxième requete.

Re: comment formuler cette requète ?

Posté : 18 févr. 2012, 23:57
par Ryle
Ben non, pas deux tables, juste deux alias pour un même table... regarde ma requête ;)

(outre le fait que je me suis trompé dans le where : journee.id_ext=ext.id AND journee.id_dom=dom.id

Re: comment formuler cette requète ?

Posté : 19 févr. 2012, 01:22
par Dev-Debutant
j'ai beau essayer, je ne comprends pas :'(

Je crois que j'ai mal fait ma base. J'aurai dû faire 3 tables. Mais même avec 3 tables, j'ai du mal a voir quoi créer.

Re: comment formuler cette requète ?

Posté : 19 févr. 2012, 07:45
par ouckileou
Non tu peux faire deux jointures en utilisant uniquement deux tables, tu mets juste un alias différent, ce qui revient à avoir deux tables différentes dans ta requête mais en fait derrière c'est la même. Si tu regardes dans la requête de Ryle il y a deux fois la table "classement", une fois avec un alias "dom" pour la jointure qui renverra le nom de l'équipe domicile, et une fois avec l'alias "ext" pour la jointure qui renverra le nom de l'équipe extérieure.

Essaies de faire simple au début : renvoie juste le nom des deux équipes qui vont jouer chaque journée, sans autre critère, pour y avoir plus clair.

Re: comment formuler cette requète ?

Posté : 19 févr. 2012, 09:11
par Dev-Debutant
Ok je crois que je viens de comprendre.
Je ne savais pas qu'on pouvait mettre des alias dans un FROM, encore moins en mettre 2 sur la meme table et encore moins le faire sans mettre de AS !

Donc si je comprends bien : FROM classement dom, classement ext, journee c'est la même chose que FROM classement AS dom, classement AS ext, journee ?

Effectivement, le code de Ryle a plus de sens comme ça et je comprends la logique.

Merci beaucoup à vous deux ! Je vais essayer ça.

edit: Ca fonctionne très bien ! Merci encore à vous deux !