i Question hier à propos de l'utilisation de MySQL pour obtenir des résultats compatibles avec une enquête.
Mes positions est maintenant ma question, si j'avais une table de questions d'enquête, une table des choix de sondage et une table des utilisateurs répond à ces questions d'enquête, Comment choisir la question de l'enquête avec tous les choix de cette enquête au sein de la même requête? P>
Table des questions p>
question choice_1 choice_2 choice_3 A or B or C A B C
4 Réponses :
Pour obtenir les questions et les choix de chaque question:
'Foo?', 'Foo1', 66.6667 'Foo?', 'Foo2', 0.0000 'Foo?', 'Foo3', 33.3333 'Bar?', 'Bar1', 50.0000 'Bar?', 'Bar2', 50.0000
SELECT questions.question_id, questions.question, choices.choice_id, choices.question_id FROM questions, choices WHERE questions.question_id = choices.question_id AND questions.question_id = "Something" Should work, I think.
Notez que la table de réponses n'a probablement pas besoin de la colonne de questionnée.
Cela vous permettra de vous poser le texte, le texte de choix et le nombre de réponses par choix. P>
SELECT Questions.question, Choices.choice_text, Count(Answers.*) AS N FROM Questions INNER JOIN Choices ON Questions.question_id = Choices.question_id LEFT JOIN Answers ON Choices.choice_id = Answers.choice_id GROUP BY Questions.question_id, Choices.choice_id
Et j'aimerais pouvoir donner un autre +1 pour indiquer la colonne positionnée inutile.
Malheureusement, votre requête ne semble pas fonctionner pour moi cependant. Je reçois 'Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version de Server MySQL pour la syntaxe de droite à utiliser à proximité de '*) comme n des questions de questions intérieures à des choix sur les questions.Question_id = Choices.q' à la ligne 1
Cela pourrait être une différence de syntaxe entre MySQL et d'autres serveurs SQL: essayez-le sans le mot "intérieur". (Mon expérience, telle qu'elle est, est avec MS SQL Server.)
Je suggérerais que la réponse de Mark Byers, bien que théoriquement si vous en avez besoin de "tout en une rangée", juste à des fins de visualisation mais pas dans le cadre d'une routine PHP que vous pouvez faire.
'Foo?', 'Foo1,Foo2,Foo3' 'Bar?', 'Bar1,Bar2'
Voulez-vous simplement les choix, ou aussi le comte? Quelle est votre "autre question" et que "maths" voulez-vous faire?
Vous ne cherchez aucune information sur la bonne réponse? Juste les possibilités de questions / choix?
@Évan: C'est une enquête, pas un test - il n'y a pas de réponse correcte.
Votre conception de base de données pourrait ne pas être normalisée. Est votre choix_id un pk? Si tel est le cas, que se passerait-il si la question_id dans la table des réponses ne correspondait pas à la question_IDE de choix_id?
Vous ne pouvez pas faire ça. Au moins, vous ne pourrez pas la récupérer avec PHP (vous pouvez réellement faire un syndicat () mais ne pourra toujours pas le chercher correctement). Ce que vous pouvez faire est de sélectionner la question, de tous les choix avec des réponses appropriées et de les exécuter à travers une boucle. Plusieurs questions aussi, OFC.
J'ai initialement pensé que cela ne pouvait pas être fait, je viens de me demander de demander. Merci à tous