尝试使用以下数据表创建特定查询时,我有点困惑:
**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"
......
这些表格包含我计划在电子商务网站中使用的“产品目录”。
这旨在优化“客户端”搜索功能并组织内部产品数据信息,将“内容管理员”任务转变为最简单,最简单的环境。 (例如,让他们选择“已输入”的数据值,而不是重新输入“已输入的数据”,避免重复的数据或拼写错误)。
根据“表格动态”,“内容管理员”可以选择向其中添加新的归因数据(产品特征)和/或新的归因值(归因值)。
信息:名为“product_id”的产品代码字段位于表关系之外,这仅用于创建链接以将信息附加到它们所属的产品。
一般来说,SQL连接要在表上获取数据,我很好。但是我需要得到/管理某些信息,我会变得疯狂。我花了很多时间才发现头疼。
我的问题是如何在单个查询中构建基于CATEGORY的常用引荐数据。 (当内容管理员选择,例如,“类别”字段中的“手机”时,他们将获得关于该类别的常用“数据表信息”,如品牌,颜色,屏幕尺寸等....只需选择他们的类别归因)并创建一个类似的查询,以突出显示或按常用的归因值(即常用的屏幕尺寸)排序。
答案 0 :(得分:0)
在单个查询中?
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;
内部选择用于根据标准&#39;手机&#39;获得正确的product_id。其他用于填充此值以及所有详细信息。为此,第一个JOIN是product_specs的自JOIN以获取所有数据,以下两个连接用于获取它们的字符串值。
顺便说一下:列product_specs.referral_data_id
是多余的,可以/应该删除