gpt4 book ai didi

mysql - 计算分组和连接的结果

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

我正在尝试制作包含存储产品的数据库。每个产品都包含未知数量的可能“选择”,这些“选择”定义了存储中的产品版本。

例如产品Sofa包含选择Color: BlackLegs: WoodMaterial: Leather 而产品仅包含精选床垫:硬

我已经使用 GROUP_CONCAT 获得了所有同类沙发:

SELECT DISTINCT p.product, p.size, p.color,p.storage,
GROUP_CONCAT(s.selection, ': ' ,s.option) AS selection
FROM product p
INNER JOIN selection s
ON p.id = s.product_id
WHERE product.id = 123
GROUP BY s.id;

问题是我如何计算在查询中连接了多少产品,或者甚至可以用单个查询来计算?

编辑:

SELECT DISTINCT product_storage.product, product_storage.size,
product_storage.color, product_storage.storage,
GROUP_CONCAT(product_storage_selection.selection,
product_storage_selection.option) as selection
FROM product_storage_link
INNER JOIN product_storage
ON product_storage_link.product_storage_id = product_storage.id
INNER JOIN product_storage_selection
ON product_storage.id = product_storage_selection.product_storage_id
WHERE product_storage_link.product_id = 7207
GROUP BY product_storage.id;

给予

Product    Color    Size    Selection
Product1 Black 10x10 Selection1:Option1, Selection2:Option1
Product1 Black 10x10 Selection1:Option2, Selection2:Option1
Product1 White 10x10 Selection1:Option1, Selection2:Option1

我尝试计算这两个表中的重复项数,并从其他表中获得相同的选择。希望这能解决问题。

所以目标是得到例如:

Product    Color    Size    Selection                                amount
Product1 Black 10x10 Selection1:Option1, Selection2:Option1 3
Product1 Black 10x10 Selection1:Option2, Selection2:Option1 1
Product1 White 10x10 Selection1:Option1, Selection2:Option1 2

来自数据库的部分:

http://sqlfiddle.com/#!9/fec0b

编辑 2:

这是包含数据的整个表格。

| id | product |  size |    color | storage |        selection |         option ||----|---------|-------|----------|---------|------------------|----------------||  1 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  1 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  2 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  2 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  3 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  3 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  4 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 2 ||  4 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 2 ||  5 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 2 ||  5 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 2 ||  6 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  6 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  7 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  7 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 |

第一个产品是根据这些值构建的。

| id | product |  size |    color | storage |        selection |         option ||----|---------|-------|----------|---------|------------------|----------------||  1 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  1 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  2 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  2 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  3 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  3 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 |

结果应该是:

| product |  size |    color | storage |                                                   selection |         amount ||---------|-------|----------|---------|-------------------------------------------------------------|----------------||     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1:Vaihtoehto 1,Lisävaihtoehto 2:Vaihtoehto 1 |              3 |

第二个产品构造自这些:

| id | product |  size |    color | storage |        selection |         option ||----|---------|-------|----------|---------|------------------|----------------||  4 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 2 ||  4 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 2 ||  5 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1 |   Vaihtoehto 2 ||  5 |     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 2 |

结果是:

| product |  size |    color | storage |                                                     selection |         amount ||---------|-------|----------|---------|---------------------------------------------------------------|----------------||     asd | Koko1 |    Väri1 |   false | Lisävaihtoehto 1:Vaihtoehto2, Lisävaihtoehto 2,2 Vaihtoehto 2 |              2 |

第三个来自这些:

| id | product |  size |    color | storage |        selection |         option ||----|---------|-------|----------|---------|------------------|----------------||  6 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  6 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 ||  7 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 1 |   Vaihtoehto 1 ||  7 |     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 2 | 2 Vaihtoehto 1 |

并且应该产生:

| product |  size |    color | storage |                                                       selection |         amount ||---------|-------|----------|---------|-----------------------------------------------------------------|----------------||     asd | Koko2 | 2 Väri 2 |   false | Lisävaihtoehto 1:Vaihtoehto 1, Lisävaihtoehto 2:2 Vaihtoehto 1  |              2 |

希望这对您有所帮助。这有点难以解释。

最佳答案

尝试 COUNT(*)

SELECT DISTINCT p.product, p.size, p.color,p.storage,
GROUP_CONCAT(s.selection, ': ' ,s.option) AS selection,
COUNT(*) as cnt
FROM product p
INNER JOIN selection s
ON p.id = s.product_id
WHERE product.id = 123
GROUP BY s.id;

tableTest
+-----------------------------------------------+
| ID | name | country | home_city |
+-----------------------------------------------+
| 1 | AAA | UK | Cambridge |
| 2 | BBB | Canada | Toronto |
| 3 | CCC | UK | Leeds |
| 4 | DDD | USA | Newyork |
+-----------------------------------------------+


SELECT country,count(*) as countryCount
FROM tableTest
GROUP BY country

+-----------------------+
|country |countryCount |
+-----------------------+
|UK | 2 |
|Canada | 1 |
|USA | 1 |
+-----------------------+

关于mysql - 计算分组和连接的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879946/

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