Php 简单的mySql连接在一条sql语句中检索问题和多项选择答案
我正在构建这个表单:将问题和答案放在数据库中,放在两个单独的表中 以下是两个db表的确切结构: 表[问题] 表[答案] 答案表通过fk_问题字段与问题一一关联 这是我的疑问:Php 简单的mySql连接在一条sql语句中检索问题和多项选择答案,php,mysql,Php,Mysql,我正在构建这个表单:将问题和答案放在数据库中,放在两个单独的表中 以下是两个db表的确切结构: 表[问题] 表[答案] 答案表通过fk_问题字段与问题一一关联 这是我的疑问: SELECT Q.id, Q.text, R.text, R.order AS rorder FROM `questions` Q LEFT JOIN reponses R ON Q.id = R.fk_question 上述查询的结果是: id qtext rtext rorder 1
SELECT
Q.id, Q.text, R.text, R.order AS rorder
FROM
`questions` Q
LEFT JOIN reponses R
ON Q.id = R.fk_question
上述查询的结果是:
id qtext rtext rorder
1 Vous discutez avec un commerçant et malgré le fait... Vous passez à l'anglais. Si ça peut lui faire plai... 1
1 Vous discutez avec un commerçant et malgré le fait... Vous lui faites remarquer et lui demandez s'il peu... 2
1 Vous discutez avec un commerçant et malgré le fait... Vous continuez à lui parler en français, mais vous... 3
2 En faisant vos courses, vous remarquez que la boît... Vous achetez le produit sans en faire de cas. 1
2 En faisant vos courses, vous remarquez que la boît... Vous achetez le produit, mais vous prenez auparava... 2
2 En faisant vos courses, vous remarquez que la boît... Vous achetez le produit et vous contactez la compa... 3
3 Vous revenez d'un voyage à l'étranger et devez vou... Vous faites valoir votre droit de vous faire servi... 1
3 Vous revenez d'un voyage à l'étranger et devez vou... Vous prenez place devant le guichet d'à côté, mai... 2
3 Vous revenez d'un voyage à l'étranger et devez vou... Vous prenez place devant le guichet d'à côté, et v... 3
4 Dans la salle d'attente chez le médecin, vous comm... Vous arrachez discrètement la page du mot croisé p... 1
4 Dans la salle d'attente chez le médecin, vous comm... Vous laissez le mot croisé et replacez le magazine... 2
4 Dans la salle d'attente chez le médecin, vous comm... Vous prenez la peine d'effacer les réponses que vo... 3
5 Dans des toilettes publiques, vous remarquez qu'un... Vous sortez un stylo et vous corrigez l'erreur. 1
5 Dans des toilettes publiques, vous remarquez qu'un... Vous sortez un stylo et biffez l'erreur en ajoutan... 2
5 Dans des toilettes publiques, vous remarquez qu'un... Vous ne vous en préoccupez pas. 3
6 Vous êtes chargé de mener une réunion d'affaire av... Vous proposez que la réunion se déroule en françai... 1
6 Vous êtes chargé de mener une réunion d'affaire av... Vous proposez que la réunion se déroule en anglais... 2
6 Vous êtes chargé de mener une réunion d'affaire av... Vous proposez que la réunion se déroule en françai... 3
7 Lors d'une visite guidée de Calgary, le guide tour... Vous levez la main pendant la visite pour corriger... 1
7 Lors d'une visite guidée de Calgary, le guide tour... Vous ne dites rien tout de suite, mais vous ne man... 2
7 Lors d'une visite guidée de Calgary, le guide tour... Vous retournez à vos courriels sur votre téléphone... 3
8 Vous venez de vous acheter un ordinateur portable ... Vous gardez l'anglais comme langue principale. 1
8 Vous venez de vous acheter un ordinateur portable ... Vous gardez l'anglais pour l'instant, histoire de ... 2
8 Vous venez de vous acheter un ordinateur portable ... Vous réinstallez le disque immédiatement et choisi... 3
9 Vous discutez en anglais au téléphone avec un prép... Vous lui proposez de revenir à l'anglais. 1
9 Vous discutez en anglais au téléphone avec un prép... Vous prenez votre mal en patience, et lorsque vous... 2
9 Vous discutez en anglais au téléphone avec un prép... Vous continuez la conversation en français mais vo... 3
10 Alors que vous faites vos courses, un homme vous d... Vous atténuez quelque peu les propos du client, qu... 1
10 Alors que vous faites vos courses, un homme vous d... Vous demandez au client de se trouver un(e) autre ... 2
10 Alors que vous faites vos courses, un homme vous d... Vous traduisez ses propos tels quels, en soulignan... 3
现在我使用两个独立的数据库调用来完成问题和答案的检索。我知道这不是最优的,可以通过SQL连接以某种方式实现
以下是问题的当前SQL:
SELECT * FROM questions Q ORDER BY Q.order
答案如下:
SELECT * FROM reponses R WHERE R.fk_question = $questionId ORDER BY R.order
使用这个SQL我可以得到所有返回的答案,但是我失去了实际的问题
SELECT
*
FROM
questions Q
LEFT JOIN reponses R
ON Q.id = R.fk_question
ORDER BY
Q.order
理想的回答应该是一行一行地回答问题,列中包含一个数组,列出答案
im已打开以更改数据库结构或sql调用。。。通过使用以下sql,我可以获得每个问题的1行和列有所有答案的专栏:
SELECT Q.id,Q.text, GROUP_CONCAT(R.text), R.order AS rorder
FROM `questions` Q
LEFT JOIN reponses R ON Q.id = R.fk_question
GROUP BY Q.id
但不太确定这种格式到底是不是最好的。。。id需要处理文本字段中的逗号,并在php中转换为实际数组
现在,有两个单独的电话似乎更清晰和工作
这是我在这个网站上的第一篇帖子,所以如果有任何不清楚的地方请告诉我,并提前感谢 欢迎来到堆栈溢出。你能把你的两张表的结构加到你的问题里吗?你怎么会把问题弄丢的?每个问题应该有n行,其中n是每个问题的回答数。每一行都会有一个问题和一个明确的回答。这种事情是可行的。查看MySQL文档。我可以得到每个问题3的3行,即可用答案的数量-但要么需要知道如何处理以这种格式显示的数据,要么需要以一种我可以轻松在php中使用for-each循环显示数据的方式格式化数据。。。理想情况下,每个问题一行,一列包含答案数组。听起来好像你在寻找数据的轴心。这里有一个很好的例子:
SELECT
*
FROM
questions Q
LEFT JOIN reponses R
ON Q.id = R.fk_question
ORDER BY
Q.order
SELECT Q.id,Q.text, GROUP_CONCAT(R.text), R.order AS rorder
FROM `questions` Q
LEFT JOIN reponses R ON Q.id = R.fk_question
GROUP BY Q.id