Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单的mySql连接在一条sql语句中检索问题和多项选择答案_Php_Mysql - Fatal编程技术网

Php 简单的mySql连接在一条sql语句中检索问题和多项选择答案

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

我正在构建这个表单:将问题和答案放在数据库中,放在两个单独的表中

以下是两个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   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