gpt4 book ai didi

MYSQL:选择与多个表的多行相关的条目

转载 作者:行者123 更新时间:2023-11-30 22:58:40 25 4
gpt4 key购买 nike

我有三个无法更改其结构的表:

方面

id     name
-----------------
1 Series
2 Material

值(value)

id     facet_id     name
----------------------------------
1 2 Glass
2 2 Metal
3 1 Series #1
4 1 Series #2
5 1 Series #3

product_facet_values

product_id     value_id
-----------------------------------
1 1
1 3
2 1
2 4
3 2
3 5
4 1

我正在尝试编写两个查询:

/1。一个将从值表中返回代表系列方面的 id,其中产品记录是 Glass 并且具有任何系列。所以像这样的输出:

id     facet_id     name
----------------------------------
3 1 Series #1
4 1 Series #2
  • 记录 1 不是系列。
  • 记录 2 不是一个系列。
  • 记录 3 被退回,因为产品 #1 既有系列又有 Material ,而 Material 是玻璃。
  • 记录 4 被退回,因为产品 #2 既有系列又有 Material ,而 Material 是玻璃。
  • 记录 5 退回,因为产品 #3 具有金属 Material ,即使它同时具有系列和 Material 。

/2。与第一个相同,但返回产品 ID 列表。

product_id 
---------------
1
2
  • 产品 #1 被退回,因为它既有系列又有 Material ,而 Material 是玻璃。
  • 产品 #2 被退回,因为它既有系列又有 Material ,而 Material 是玻璃。
  • 产品 #3 返回,因为它具有金属 Material ,即使它既有系列又有 Material 集。
  • 产品 #4 返回,因为它没有系列集,即使 Material 是玻璃。

最佳答案

第一个查询:

试试这个..我相信这会成功。

SELECT 
v.id
FROM value v
JOIN product_facet_values pfv ON pfv.value_id = v.id
WHERE pfv.product_id IN
( SELECT
product_id
FROM product_facet_values
WHERE
product_id IN
( SELECT
product_id
FROM product_facet_values
GROUP BY product_id
HAVING COUNT(*) > 1
)
AND value_id = 1
)
AND v.facet_id = 1;

第二个查询:

同一查询的内部部分返回值为 1 和非 1 的产品,所以应该是这个

SELECT 
product_id
FROM product_facet_values
WHERE
product_id IN
( SELECT
product_id
FROM product_facet_values
GROUP BY product_id
HAVING COUNT(*) > 1
)
AND value_id = 1

说明:

最内层子查询:

SELECT 
product_id
FROM product_facet_values
GROUP BY product_id
HAVING COUNT(*) > 1

给我每个产品有多个记录的产品(稍后按“玻璃”和“系列”过滤)

中间子查询:

SELECT 
product_id
FROM product_facet_values
WHERE
product_id IN
(
INNERMOST SUBQUERY
)
AND value_id = 1

给我 value_id = 1(又名“玻璃”)且有多个记录的产品。

最外层查询:

SELECT 
v.id
FROM value v
JOIN product_facet_values pfv ON pfv.value_id = v.id
WHERE pfv.product_id IN
(
MIDDLE SUBQUERY
)
AND v.facet_id = 1;

给我与“玻璃”相关但 facet_id = 1(又名系列)的产品的值(value) ID

关于MYSQL:选择与多个表的多行相关的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25068837/

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