php - mysql 多对多关系

标签 php mysql

你好,我有两个表,名称为大学行业。大学会有很多产业,产业也会有很多大学。因此,为了实现这种多对多关系,我创建了另一个名为 university_industry 的表。它具有大学和行业的 ID 作为 uni_idind_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.纽约大学

->会计

->财务

而不是

  1. 纽约大学

    ->会计

  2. 纽约大学

    ->财务

希望您能理解我的问题。我正在研究 Php,我不知道我是否可以通过 php 代码实现这个特定结果,或者我可以直接从查询实现。

最佳答案

您无法通过单个查询实现此目的,因为它始终以表格格式返回数据。您必须根据您需要的格式转换代码中的数据集

关于php - mysql 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119578/

相关文章:

javascript - 自动建议 Javascript/PHP/AJAX 代码

php - 使用 greatest 计算分配给用户的最多项目数

python - 使用 Django syncdb 安装存储过程或函数

mysql - 从日期时间字段中选择年份和月份并插入日期字段

php - 我的 php echo row ['Date' ] 不知怎的就消失了

PHP isset ('submit' ) 总是返回 FALSE

PHP group mysql select by 两列

php - 具有相同名称的Echo列-PHP/MYSQL左联接

php - 通过 Web 界面向 PHP 脚本公开 MySQL?

PHP Dropdown 填充年份 - 如何选择当前年份