gpt4 book ai didi

MySQL 和 PHP 多对多数据库关系

转载 作者:行者123 更新时间:2023-11-29 08:32:48 25 4
gpt4 key购买 nike

我正在尝试提高 SQL 查询知识,但在多对多关系查询上陷入困境。

使用PHP和MySQL数据库结构如下:

数据库结构:

--------------------------------------------
| colour |
--------------------------------------------
| colour_id | colour |
--------------------------------------------
| 1 | blue |
--------------------------------------------
| 2 | red |
--------------------------------------------
############################################
--------------------------------------------

.

-----------------------------------------------------------------
| product_colours |
-----------------------------------------------------------------
| id | product_id | colour_id |
-----------------------------------------------------------------
| 1 | 1 | 2 |
-----------------------------------------------------------------
| 2 | 2 | 1 |
-----------------------------------------------------------------
#################################################################
-----------------------------------------------------------------

主表

-----------------------------------------------------------------
| products |
-----------------------------------------------------------------
| id | name | details |
-----------------------------------------------------------------
| 1 | product 1 | blah |
-----------------------------------------------------------------
| 2 | product 2 | blah |
-----------------------------------------------------------------
#################################################################
-----------------------------------------------------------------


-----------------------------------------------------------------
| product_group_names |
-----------------------------------------------------------------
| id | product_id | group_name_id |
-----------------------------------------------------------------
| 1 | 1 | 1 |
-----------------------------------------------------------------
| 2 | 2 | 2 |
-----------------------------------------------------------------
#################################################################
-----------------------------------------------------------------


--------------------------------------------
| group_name |
--------------------------------------------
| group_name_id | group_name |
--------------------------------------------
| 1 | product_group_1 |
--------------------------------------------
| 2 | product_group_2 |
--------------------------------------------
############################################
--------------------------------------------

我可以使用联接编写一个查询:SELECT * color WHERE group_name = Product_group_1吗?

任何帮助都会很棒。非常感谢。

最佳答案

您当然可以编写一个查询来做到这一点。您基本上需要将表连接在一起,以便可以将所需的数据从表链接到表,然后为所需的条件添加 where 子句。

您的颜色“链接”到您的product_colours通过colour_id属性,产品颜色链接到 product_group_names通过product_id两个表上的属性,并且您的组名称通过 group_name_id 链接和group_id group_names 上的属性表。

当您执行此类查询时,如果这些表中有大量记录 -​​ 查询可能会非常慢。您需要确保在 JOIN...ON 中引用的每一列上添加索引。条款,以及 WHERE条款。

SELECT colour FROM colours c
JOIN product_colours pc ON c.id = pc.colour_id
JOIN product_group_names pgn ON pgn.product_id = pc.product_id
JOIN group_name gn ON gn.id = pgn.group_name_id
WHERE gn.group_name = "product_group_1"

关于MySQL 和 PHP 多对多数据库关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com