GONETHEN 2021-11-30 18:48 采纳率: 0%
浏览 44

电商项目mysql,根据规格筛选sku的sql怎么写

问题遇到的现象和发生背景

相关的表结构如下

img

问题相关代码
-- 每个sku有哪些规格值
SELECT sku.spu_id AS spuid,sku.id AS skuid,sku.`name` skuname,spec.id as specid,spec.`name` specname,o.id AS optionid,o.`name` as optionname FROM a_sku sku
LEFT JOIN a_sku_option so ON sku.id=so.sku_id
LEFT JOIN a_option o ON so.option_id=o.id
LEFT JOIN a_specific spec ON o.specific_id=spec.id
ORDER BY sku.`name`;

结果

img

运行结果及报错内容

现在可以查到每个sku有多少规格,但是有重复。也就是说我不知道怎么列转行。

我的解答思路和尝试过的方法

应该不能用case when,因为不确定有多少个、哪些规格
尝试写出下面这个语句也不是我想要的


SELECT sku.spu_id AS spuid,sku.id AS skuid,sku.`name` skuname,spec.id as specid,spec.`name` specname,o.id AS optionid,o.`name` as optionname FROM a_sku sku
LEFT JOIN a_sku_option so ON sku.id=so.sku_id
LEFT JOIN a_option o ON so.option_id=o.id
LEFT JOIN a_specific spec ON o.specific_id=spec.id
WHERE sku.spu_id=1
AND (CASE spec.id
    WHEN 1 THEN
        o.id=2
    WHEN 2 THEN
        o.id=4
    WHEN 3 THEN
        o.id=6
    WHEN 4 THEN
        o.id=8
    WHEN 5 THEN
        o.id=10
    WHEN 6 THEN
        o.id=12
END);

结果

img

我想要达到的结果

跟淘宝京东一样,选择各个规格选项后确定唯一的sku

  • 写回答

1条回答 默认 最新

  • nssnail 2021-11-30 20:40
    关注

    这种不建议用sql啊,别人是用es的

    评论

报告相同问题?

问题事件

  • 创建了问题 11月30日

悬赏问题

  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序