你好,我有两个表,名称为大学和行业。大学会有很多产业,产业也会有很多大学。因此,为了实现这种多对多关系,我创建了另一个名为 university_industry 的表。它具有大学和行业的 ID 作为 uni_id
和 ind_id
。我有一个 student 表,其中 uni_id
作为外部 ID。因此,我想要获取学生表中的所有大学,以及这些特定大学的所有行业。这是我完成的查询
SELECT university . * , industry . *
FROM university
JOIN university_industry ON university_industry.uni_id = university.uni_id
JOIN industry ON industry.ind_id = university_industry.ind_id
WHERE university.uni_id IN (select uni_id from student where uni_id IS NOT NULL)
这个查询的问题是我得到这样的结果
Array
(
[0] => Array
(
[university] => Array
(
[uni_id] => 1
[uni_name] => NYC Uni
)
[industry] => Array
(
[ind_id] => 1
[ind_name] => Finance
)
)
[1] => Array
(
[university] => Array
(
[uni_id] => 1
[uni_name] => NYC Uni
)
[industry] => Array
(
[ind_id] => 2
[ind_name] => Accounting
)
)
)
我想要这样的结果
(
[0] => Array
(
[University] => Array
(
[uni_id] => 1
[uni_name] => NYU
)
[Industry] => Array
(
[0] => Array
(
[ind_id] => 1
[ind_name] => Finance
[UniversityIndustry] => Array
(
[id] => 1
[uni_id] => 1
[ind_id] => 1
)
)
[1] => Array
(
[ind_id] => 2
[ind_name] => Accounting
[UniversityIndustry] => Array
(
[id] => 2
[uni_id] => 1
[ind_id] => 2
)
)
)
)
就像我需要数组的单个索引中的所有行业一样。所以应该是这样的
1.纽约大学
->会计
->财务
而不是
纽约大学
->会计
纽约大学
->财务
希望您能理解我的问题。我正在研究 Php,我不知道我是否可以通过 php 代码实现这个特定结果,或者我可以直接从查询实现。
最佳答案
您无法通过单个查询实现此目的,因为它始终以表格格式返回数据。您必须根据您需要的格式转换代码中的数据集
关于php - mysql 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119578/