cs_ripoux
Messages postés30Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention31 mai 2005
-
10 mai 2005 à 08:44
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
10 mai 2005 à 21:09
Bonjour,
J'ai un soucis au niveau des requêtes multitable en MySQL...
Voila ce que j'aimerais faire:
J'ai une table de "question" et un table de "réponse" pour chacune de ces 2 tables, j'ai 1 table associative pour la traduction en 3 langue. J'aimerais afficher dans une page, chaque question entrée avec a chaque fois toute les réponses associé aux questions.
T_QUEST_LANGUE:
- questlg_libelle (champ qui contient le texte de la question avec la clause where questlg_codelg = '$LangueChoisieParLutilisateur')
T_REP_LANGUE
- replg_libelle (champ qui contient le texte des réponses avec la clause where replg_codelg = '$LangueChoisieParLutilisateur')
Mais pour réussir a accouplé les réponses avec les questions il me faut aussi:
T_QUESTION
- quest_id
T_REPONSE:
- rep_quest_id (fk qui relie T_QUESTION à T_REPONSE)
exemple de ce que j'ai fais:
$reqquest mysql_query("SELECT questlg_libelle from t_quest_langue where questlg_codelg '$langage'") or die ("erreur sql ".mysql_error());
$reqrep mysql_query("SELECT replg_libelle from t_rep_langue where replg_codelg '$langage' ") or die ("erreur sql ".mysql_error());
La, logiquement il m'affiche les questions et ensuite toutes les réponses qu'il y a dans ma bases... même si elle ne correspondent pas a la question.
Il me faudrait qqch dans ce style:
$reqquest mysql_query("SELECT QLG.questlg_libelle, Q.quest_id from t_quest_langue QLG, t_question Q where questlg_codelg '$langage'") or die ("erreur sql ".mysql_error());
$questionid = $reqquest['quest_id']
$reqrep mysql_query("SELECT RLG.replg_libelle, R.rep_quest_id from t_rep_langue RLG, t_reponse R where replg_codelg '$langage' and rep_quest_id = '$questionid '") or die ("erreur sql ".mysql_error());
Alors si quelqu'un pourrais m'aider ou me dire si mon explication n'est pas assez claire...
En tout cas je suis certain qu'il faut une requête multitable pour réaliser ceci... mais je n'ai ni trouvé dans mes bouquins ni sur internet une explication assez claire pour moi.
cs_ripoux
Messages postés30Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention31 mai 2005 10 mai 2005 à 12:56
Hello,
Merci a toi de te soucier...
Je viens de trouver la solution... rien de bien compliqué, mais j'ai de la peine a réfléchire avant midi moi lol !!
Pour ceux que ca intéresse voici mes 2 requêtes:
$reqquest mysql_query("SELECT questlg_quest_id, questlg_libelle from t_quest_langue where questlg_codelg '$langage'") or die ("erreur sql ".mysql_error());
/*Je tourne d'abord dans un boucle pour afficher chaques question que me retourne le select ci-dessus.... et ensuite:*/
$id = $question['questlg_quest_id'];
/*Je récupère l'id de la question....*/
$reqrep mysql_query("SELECT RL.replg_rep_id, RL.replg_libelle from t_rep_langue RL, t_reponse R where RL.replg_codelg '$langage' and R.rep_quest_id = '$id' and R.rep_id = RL.replg_rep_id") or die ("erreur sql ".mysql_error());
/*Et pour finir, je tourne dans un boucle pour afficher les réponses en rapport avec la question*/
En fait je n'utilise plus que 3 tables... je laisse tomber ma table T_QUESTION !
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 10 mai 2005 à 21:09
Salut,
utilise un LEFT JOIN qui va te retourner la question plusieurs fois
(autant de fois que de lignes retournées) et les réponses, le tout en
une seule requête (le LEFT JOIN n'est pas forcément nécessaire, mais il
te faut faire une jointure si tu as deux tables).