Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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 两个表之间的联接,不带(外键和主集合提供重复行)_Php_Mysql_Json - Fatal编程技术网

Php 两个表之间的联接,不带(外键和主集合提供重复行)

Php 两个表之间的联接,不带(外键和主集合提供重复行),php,mysql,json,Php,Mysql,Json,我有3个表及其列:- 章节:-Id(主键) 名称 问题库:-Id(主键), 名称, 第四章id(作为外键), 问题列表(应用为JSON数据类型,包含章节id数组) 问题:-Id(主键)名称,章节Id(外键指章节Id) 问题与章节的关系:-一对一(表示一个问题可以添加到一个章节中,不能添加到多个章节中) 问题库到章节:-多对一(意味着每个章节我们不能创建任何问题库) 因为一个问题可以属于问题库的数量,所以我添加了一列作为问题库列表(在问题库表中),它由问题id列表作为JSONDATATATYPE组

我有3个表及其列:-

章节:-Id(主键)
名称
问题库:-Id(主键),
名称,
第四章id(作为外键),
问题列表(应用为JSON数据类型,包含章节id数组)
问题:-Id(主键)
名称,
章节Id(外键指章节Id)

问题与章节的关系:-一对一(表示一个问题可以添加到一个章节中,不能添加到多个章节中)

问题库到章节:-多对一(意味着每个章节我们不能创建任何问题库)

因为一个问题可以属于问题库的数量,所以我添加了一列作为问题库列表(在问题库表中),它由问题id列表作为JSONDATATATYPE组成

让我知道这个设计正确吗

请告诉我查询以获得以下所需结果

假设下面是我的桌子
第章
-------------------------------------
Id名称
-------------------------------------
1概述
--------------------------------------------------------------
2技术方面的
问题
--------------------------------------------------------------
Id姓名章节\u Id
--------------------------------------------------------------
我的宠物叫什么名字?
----------------------------------------------------------------2我的汽车叫什么名字?
----------------------------------------------------------------3我的朋友叫什么名字?
----------------------------------------------------------------4什么是印度首都1
----------------------------------------------------------------5 Java中的oops概念是什么
----------------------------------------------------------------6如何编译java2
----------------------------------------------------------------7什么是数组在php2
中----------------------------------------------------------------------
问题银行
----------------------------------------------------------------Id姓名问题列表第章问题银行
问题银行
问题银行
1问题银行11,21
---------------------------------------------------------------------------------
2问题21,3,41
---------------------------------------------------------------------------------
3问题35,62
---------------------------------------------------------------------------------
4问题\u银行472
---------------------------------------------------------------------------------
5问题56,72

假设我想获得所有属于技术章节的问题及其各自的问题库id,则结果应显示如下
---------------------------------------------------------------------------------------
第章身份证问题银行身份证问题姓名 2问题\u bank\u 35 java中的oops概念是什么
-------------------------------------------------------------------------------------------
2问题\u bank\u 36如何编译java 2问题\u bank\u 47 php中的数组是什么
-------------------------------------------------------------------------------------------
2问题\u银行\u 56如何编译java
-------------------------------------------------------------------------------------------
2问题库\u 57如果我选择章节作为常规,php中的数组与之相同。如果我同时选择技术和常规章节,则查询应返回问题库中的问题,该问题库属于相应章节。

提前感谢……

我建议您将问题列表保存为问题库中的一行,而不是逗号分隔,查找下面的查询以根据图表获取数据。如果您在使用的查询中或在下面的查询中遇到问题,请告知我们。:)快乐编码

select q.name as question_name, q.id as question_id, qb.name as question_bank, c.id as chapter_id 
from chapter as c
join question as q on q.chapter_id = c.id
join question_bank as qb on qb.chapter_id = q.chapter_id
where c.id = 2;

我建议您将问题列表保存为问题库中的一行,而不是逗号分隔的,查找下面的查询以按照您的图表获取数据。如果您在使用的查询中或在下面的查询中遇到问题,请告知我们。:)快乐编码

select q.name as question_name, q.id as question_id, qb.name as question_bank, c.id as chapter_id 
from chapter as c
join question as q on q.chapter_id = c.id
join question_bank as qb on qb.chapter_id = q.chapter_id
where c.id = 2;

请添加您已经尝试过的SQL查询,并得到相应的结果。很有可能,它可以稍微调整,以使您达到所需的结果。选择qb.章号,qb.名称作为问题库号,qb.id作为问题库号,q.名称作为问题库号,q.名称作为问题库号作为问题库号,q.名称作为问题库号作为内部联接(从问题库号所在的位置(4,5)中选择章号,问题库号,名称,问题库号列表)作为qb上的qb。chapter_id=q。chapter_id其中qb。chapter_id=5,其中选择where子句中的5。chapter_id其中选择where子句中的5。chapter_id和(4,5)在子查询的where子句中,是属于所选章节的题库id列表。我已经编写了两个查询,一个是获取属于所选章节的题库列表。另一个是获取(题库的)id相关的问题我已经从第一个查询中获得请添加您已经尝试过的SQL查询,并得到相应的结果。很有可能,它可以稍微调整,以使您达到所需的结果。选择qb.章号,qb.名称作为问题库号,qb.id作为问题库号,q.名称作为问题库号,q.名称作为问题库号作为问题库号,q.名称作为问题库号作为内部联接(从问题库号所在的位置(4,5)中选择章号,问题库号,名称,问题库号列表)作为qb上的qb。chapter_id=q。chapter_id其中qb。chapter_id=5,其中where子句中的5被选中chapter_id其中where子句中的5被选中chapter_id和(4,5)在where cl中