JeuWeb - Crée ton jeu par navigateur
requete - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : requete (/showthread.php?tid=1394)

Pages : 1 2


requete - jldbaro - 17-10-2010

Bonjour,

J'ai une base de donnée recherche comme suit :
Id_rech
Iso_pays
Nom
Type
Description
Niveau_max
Duree
Cout
Recherche_requis_id
Recherche_requis_niveau

Et ma requête actuel pour chercher les recherches a effectué:
Citation : $request = 'SELECT * FROM recherche LEFT JOIN recherche_niveau ON recherche_niveau.Id_recherche=recherche.Id_rech WHERE Type=1 AND Iso_pays ="'.$_SESSION['Iso_pays'].'"';

Elle fonctionne très bien. Cependant, je voudrais faire un lien entre Recherche_requis_id et Id_rech. Pour que je puisse afficher le niveau nécessaire donc la valeur nom. Mais je reste bloqué.


J'ai essayé cette requête mais cela ne fonctionne pas. Une idée de mon erreur? J'ai essayé de mettre a.Recherche_requis_id=b.Id_rech

Mais cela ne fonctionne pas...

Citation : $request = 'SELECT a.* b.nom AS Nom_requis FROM recherche a, recherche b LEFT JOIN recherche_niveau ON recherche_niveau.Id_recherche=recherche.Id_rech WHERE Type=1 AND Iso_pays ="'.$_SESSION['Iso_pays'].'"';

Merci d'avance,


RE: requete - Myrina - 17-10-2010

Si je comprend bien, tu souhaites avoir une recherche (id_rech,nom) avec la recherche requise (id_rech=Recherche_requis_id,nom,niveau).


SELECT
rech.id_rech,
rech.nom,
rech.Recherche_requis_id AS 'Id Prérequis',
rech.Recherche_requis_niveau AS 'Niveau Prérequis',
requis.nom AS 'Nom Prérequis'
FROM recherche rech, recherche requis
WHERE requis.rech_id=rech.Recherche_requis_id
AND Type=1 AND Iso_pays =...



RE: requete - jldbaro - 17-10-2010

Au fait j'ai besoin d'avoir toutes les données de recherche et d'avoir le "nom" de Recherche_requis_id associé à Id_rech.

Mais j'ai oublié de dire tantôt que je fais "LEFT JOIN recherche_niveau ON recherche_niveau.Id_recherche=recherche.Id_rech" pour avoir les infos du niveau du joueur actuel.

Je sais pas si je suis plus clair.

Les différentes recherche
[Image: info_bsd.png]

Niveau actuel du joueur
[Image: info_bsd2.png]

Et j'ai besoin des infos suivantes:
Code :
<td><?php echo $donnee['Nom'];?></td>
<td><?php echo $donnee['Description'];?></td>
<td><?php echo $donnee['Id_niveau'];?></td>
<td><?php echo $donnee['Niveau_max'];?></td>
<td><?php echo $donnee['Cout'];?></td>
<td><?php echo date("H:i:s",$donnee['Duree']); ?> </td>
<td><?php echo $donnee['Nom_statut']; ?></td>



RE: requete - Myrina - 17-10-2010

Et mon SELECT donne quoi?

Pour avoir toutes les colonnes de la table recherche, tu remplace rech.id_rech, rech.nom par rech.*

Que cherches-tu à faire avec recherche_niveau?


RE: requete - jldbaro - 17-10-2010

(17-10-2010, 08:55 PM)Myrina a écrit : Que cherches-tu à faire avec recherche_niveau?

C'est le niveau que dois atteindre le joueur pour passer au niveau suivant. Exemple blindé léger tu dois avoir les 10 premiers niveaux pour commencer le blindé moyen.

La requête avance, mais j'ai 10X les mêmes résultat...

Citation :$request = 'SELECT rech.*, requis.Recherche_requis_id, requis.nom AS "Nom_statut" FROM recherche rech, recherche requis WHERE rech.Recherche_requis_id=requis.Recherche_requis_id AND rech.Type=1 AND rech.Iso_pays ="'.$_SESSION['Iso_pays'].'"';

Dès que je rajoute:

Citation : LEFT JOIN recherche_niveau ON recherche_niveau.Id_recherche=rech.Id_rech
Ma requête ne fonctionne plus...

ERREUR:

Citation :- <error date="Sun Oct 17 19:21:00 2010" remote_addr="87.64.170.122" called_function="select" error_code="-15004">
<message>Impossible d'exécuter la requête.</message>
<details>Request :'SELECT rech.*, requis.nom AS "Nom_statut" FROM recherche rech, recherche requis LEFT JOIN recherche_niveau ON recherche_niveau.Id_recherche=rech.Id_rech WHERE rech.Recherche_requis_id=rech.Recherche_requis_id AND rech.Type=1 AND rech.Iso_pays ="DE"'</details>
<mysql_error>Unknown column 'rech.Id_rech' in 'on clause'</mysql_error>



RE: requete - Myrina - 17-10-2010

Essaie ceci:

SELECT
rech.id_rech, rech.nom,
rech.description,
rech.niveau_max,
rech.duree,
rech.cout,
rech.Recherche_requis_id AS 'Id Prérequis',
rech.Recherche_requis_niveau AS 'Niveau Prérequis',
requis.nom AS 'Nom Prérequis',
niv.id_Niveau AS 'Niveau joueur'
FROM recherche rech, recherche requis
LEFT JOIN recherche_niveau niv
ON rech.Id_Rech=niv.Id_recherche
WHERE requis.rech_id=rech.Recherche_requis_id
AND rech.Type=...
AND rech.Iso_pays =...
AND niv.Id_joueur=...

$donnee['Nom_statut']=???????????


RE: requete - jldbaro - 17-10-2010

RESOLU REQUETE:

Citation :SELECT rech.*, requis.Id_rech, requis.nom AS "Nom_statut" FROM recherche rech, recherche requis WHERE requis.Id_rech=rech.Recherche_requis_id AND rech.Type=3 AND rech.Iso_pays ="'.$_SESSION['Iso_pays'].'" ORDER BY nom

Merci


RE: requete - Myrina - 17-10-2010

Mais tu n'as plus le niveau du joueur!!


RE: requete - jldbaro - 17-10-2010

Tu as raison, j'en ai besoin... Oups... Comment faire?


RE: requete - Myrina - 17-10-2010

(17-10-2010, 09:44 PM)jldbaro a écrit : Tu as raison, j'en ai besoin... Oups... Comment faire?
Tu as testé ceci?