gpt4 book ai didi

mysql - 如何在 MySQL 中使用 3 个连接表创建基于条件的查询

转载 作者:行者123 更新时间:2023-11-30 00:56:53 24 4
gpt4 key购买 nike

当尝试使用以下数据表创建特定查询时,我有点困惑:

**table 1 - referral_data:**

ID attribution_name
------------------------
1 Category
2 Brand
3 Size
4 Color
5 Processor
6 OS
7 Screen Size
.....

**table 2 - referral_values:**

ID ref_data_id attribution_value
---------------------------------------------
1 1 Cell Phones
2 1 Tablets
3 1 Laptops
4 1 Computers
5 1 LCD Monitors
6 2 Nokia
7 2 Motorola
8 2 Samsung
9 2 Lenovo
10 2 Philips
11 3 10x10x11
12 3 100x100x20
13 3 10x200x200
14 3 2x2x3
15 4 Black
16 4 Cyan
17 4 Magenta
18 4 White
19 4 Blue
20 5 ARM Cortex A11
21 5 Snapdragon 11
22 5 Intel I3 XXXXX
23 5 Exynos XXXX
24 6 Android 4.1
25 6 Android 3.0
26 6 Windows Phone 3
27 6 Windows 8 Professional
28 7 18.5"
29 7 11.8"
30 7 7.0"
31 7 5.0"
32 7 3.5"
......

**table 3 - product_specs:**

ID product_id referral_data_id referral_value_id
--------------------------------------------------------
1 1050 1 1 // <-- Product 1 - Category: Cell Phones
1 1050 2 8 // <-- Product 1 - Brand: Samsung
1 1050 4 19 // <-- Product 1 - Color: Blue
1 1050 6 24 // <-- Product 1 - Processor: Exynos XXXX
1 1050 7 30 // <-- Product 1 - Screen Size: 7.0"
1 1068 1 4 // <-- Product 2 - Category: Computers
1 1068 2 9 // <-- Product 2 - Brand: Samsung
1 1068 6 22 // <-- Product 2 - Processor: Intel Core I3
1 1068 7 28 // <-- Product 2 - Screen Size: 18.5"
......

这些表包含在我计划在电子商务网站中使用的“产品目录”中。

这是为了优化“客户端”搜索功能并组织内部产品数据信息,从而在尽可能简单和轻松的环境中完成“内容管理员”任务。 (例如,让他们选择“已输入的”数据值,而不是重新输入“已输入的数据”,避免重复数据或拼写错误)。

“内容管理员”将可以根据“表格动态”选择插入新的归因数据(产品特征)和/或新的归因值(归因值)。

Info:名为“product_id”的产品代码字段,位于表关系之外,这仅用于创建链接以将信息附加到其所属的产品。

一般来说,通过 SQL 连接来获取表中的数据,我没问题。但是我需要获取/管理某些信息,我快疯了。我花了很多时间,但我发现很头疼。

我的问题是关于如何在单个查询中构建基于类别的常用推荐数据。 (例如,当内容管理员在“类别”字段中选择“手机”时,他们将获得有关该类别的常用“数据表信息”,例如品牌、颜色、屏幕尺寸等......只需选择其类别属性)并创建类似的查询来突出显示或按常用属性值(即常用屏幕尺寸)进行排序。

最佳答案

在单个查询中?

SELECT ps2.product_id,rv2.attribution_value,rd.attribution_name 
FROM ((
(select ps.* from product_specs ps JOIN referral_values rv
ON rv.ref_data_id=ps.referral_value_id
WHERE rv.attribution_value = 'Cell Phones'
) ps1
JOIN product_specs ps2 on ps1.product_id=ps2.product_id)
JOIN referral_values rv2 ON ps2.referral_value_id = rv2.id)
JOIN referral_data rd ON rd.id = rv2.ref_data_id;

内部选择用于根据“手机”条件获取正确的product_id。其他的用于用所有详细信息填充该值。为此,第一个 JOIN 是 Product_specs 的自 JOIN 以获取所有数据,以下两个 JOIN 用于获取它们的字符串值。

顺便说一句:product_specs.referral_data_id 列是多余的,可以/应该删除

关于mysql - 如何在 MySQL 中使用 3 个连接表创建基于条件的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20477696/

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