Problème de requête SQL

Akyro -  
Yoan Messages postés 11905 Statut Modérateur -
Bonjour,

Je vais essayer de vous expliquer clairement mon problème...

En gros je dispose de 2 tables (voir liens ci dessous)

table 1 (roster) : http://image.netenviesdemariage.com/images/1225469480ygixvrh.jpg

table 2 (down) : http://image.netenviesdemariage.com/images/122546966188354su.jpg


Prenons la table `down` la ligne 2... dans la colonne `boss` il y a "Boss2" et dans la colonne `participant` il y a la chaine de caractère "Eclyx,Taliya,Trishae" ...

Dans la table `roster` il y a 3 colonnes : id, nom et classe

J'aimerai faire une requête me permettant d'afficher pour un boss donné (Boss2) les membres qui y ont participé (Eclyx,Taliya,Trishae), mais d'une classe précise, exemple Chaman (Eclyx,Trishae)

Donc en gros ma requête dois me montrer pour `boss` = "Boss2" et `classe` = "Chaman" : Eclyx,Trishae

Et ça je n'y arrive pas ...

Voici la requête que j'ai faite :

$req_down = 'SELECT `participant` FROM `down` LEFT JOIN `roster` ON `participant` LIKE "%nom%" WHERE `classe` = "Chaman" AND `boss` = "Boss2"';
$result_down = mysql_query($req_down, $con);

list($participant) = mysql_fetch_row($result_down);

echo $participant;


Merci de votre aide.

3 réponses

Yoan Messages postés 11905 Statut Modérateur 2 332
 
Ta table down n'est pas en première forme normale (un champs contient plusieurs informations), fais plutôt une table participation(id,boss,#participant), ça te donnera ça : https://www.cjoint.com/?kFspOm7wTk

Ca permet ensuite de faire des jointures entre les tables.

Définie également proprement les clés de tes tables, pour chacune d'entre-elle, c'est id et id uniquement.
0
Yoan Messages postés 11905 Statut Modérateur 2 332
 
Ensuite ta requête c'est :
SELECT * FROM down d,roster r --Définition des alias
WHERE participant='Eclyx' --Première sélection sur le premier critère
AND classe='Chaman' --Seconde sélection sur le second critère
AND d.participant=r.nom; --Jointure
0
Akyro
 
Pour ce qui est des clé dans la table c'est bien ID qui est la clé primaire dans chaque table (c'est phpmyadmin qui souligne tout comme ça)

Ensuite j'avais vu quelque par une table comme ça avec plusieurs données dans la même case mais c'était basé sur une requête différente et ça marchai mais là c'est vrai que c'est "bizarre" ^^

En fait je veux faire une page qui me permet de crée un "down" .. l'admin rentre le nom du boss qu'il veut et en dessous il y aurai tout les membres du roster et il cocherai dans des checkbox les participants.

C'est pour cela que a la base j'avais plusieurs infos dans la même case mais avec ta solution c'est vrai que c'est plus simple mais si par exemple dans le futur je rajoute un membre dans le roster il s'ajoutera dynamiquement a la liste des membre avec sa checkbox correspondante pour la création d'un down ... mais alors la suite pour la requête d'insertion dans la table ça ne sera plus dynamique vu que la je devrai avoir une requête pour chaque checkbox non?
0
Yoan Messages postés 11905 Statut Modérateur 2 332
 
euh, je sais pas, je peux pas répondre à ta question, je sais pas ce que c'est les roster et les down, moi, mais une chose est sûre c'est que tu utilises ta solution ou une solution plus propre en 3FN, tu seras obligé dans les deux cas de modifier les deux tables (deux ajouts avec la 2nde solution, ou un ajout/un update avec ta solution).
0