-- 查询今天入库的SPU和SKU商品数据 -- 用于查询当天新增的商品信息 -- ====================================== -- 1. 查询今天入库的SPU商品 -- ====================================== -- 查询今天创建的SPU商品(SPU级别) SELECT spu.id AS spu_id, spu.tenant_id, spu.shop_id, spu.shoplazza_id AS shoplazza_product_id, spu.title AS product_title, spu.description AS product_description, spu.brief AS product_brief, spu.vendor AS brand_name, spu.category AS product_category, spu.category_path AS category_path, spu.handle AS product_handle, spu.tags AS product_tags, spu.published AS product_published, spu.published_at AS publish_time, spu.image_src AS main_image_url, spu.image_width AS main_image_width, spu.image_height AS main_image_height, spu.create_time AS spu_create_time, spu.update_time AS spu_update_time, CASE WHEN spu.deleted = 1 THEN '已删除' ELSE '正常' END AS spu_status FROM shoplazza_product_spu spu WHERE DATE(spu.create_time) = CURDATE() -- 今天的日期 AND spu.deleted = 0 -- 未删除的商品 ORDER BY spu.create_time DESC; -- ====================================== -- 2. 查询今天入库的SKU商品 -- ====================================== -- 查询今天创建的SKU商品(SKU级别) SELECT sku.id AS sku_id, sku.tenant_id, sku.shop_id, sku.spu_id, sku.shoplazza_id AS variant_id, sku.shoplazza_product_id AS shoplazza_product_id, sku.sku AS sku_code, sku.title AS sku_title, sku.price AS sku_price, sku.compare_at_price AS compare_price, sku.cost_price AS cost_price, sku.inventory_quantity AS stock_quantity, sku.weight AS product_weight, sku.weight_unit AS weight_unit, sku.option1 AS color_option, sku.option2 AS size_option, sku.option3 AS material_option, sku.image_src AS sku_image_url, sku.barcode AS barcode, sku.position AS variant_position, sku.create_time AS sku_create_time, sku.update_time AS sku_update_time, CASE WHEN sku.deleted = 1 THEN '已删除' ELSE '正常' END AS sku_status FROM shoplazza_product_sku sku WHERE DATE(sku.create_time) = CURDATE() -- 今天的日期 AND sku.deleted = 0 -- 未删除的商品 ORDER BY sku.create_time DESC; -- ====================================== -- 3. 关联查询今天入库的SPU及其对应的SKU -- ====================================== -- 查询今天创建的SPU及其关联的SKU信息 SELECT spu.id AS spu_id, spu.tenant_id, spu.shop_id, spu.shoplazza_id AS shoplazza_product_id, spu.title AS product_title, spu.vendor AS brand_name, spu.tags AS product_tags, spu.published AS product_published, spu.create_time AS spu_create_time, -- 聚合SKU信息 COUNT(sku.id) AS sku_count, COALESCE(MIN(sku.price), 0) AS min_price, COALESCE(MAX(sku.price), 0) AS max_price, COALESCE(SUM(sku.inventory_quantity), 0) AS total_stock, GROUP_CONCAT(DISTINCT sku.option1 ORDER BY sku.option1 SEPARATOR ', ') AS available_colors, GROUP_CONCAT(DISTINCT sku.option2 ORDER BY sku.option2 SEPARATOR ', ') AS available_sizes, GROUP_CONCAT(DISTINCT sku.option3 ORDER BY sku.option3 SEPARATOR ', ') AS available_materials FROM shoplazza_product_spu spu LEFT JOIN shoplazza_product_sku sku ON spu.id = sku.spu_id AND spu.tenant_id = sku.tenant_id AND sku.deleted = 0 WHERE DATE(spu.create_time) = CURDATE() -- 今天创建的SPU AND spu.deleted = 0 -- 未删除的SPU GROUP BY spu.id, spu.tenant_id, spu.shop_id, spu.shoplazza_id, spu.title, spu.vendor, spu.tags, spu.published, spu.create_time ORDER BY spu.create_time DESC; -- ====================================== -- 4. 查询今天入库商品的数量统计 -- ====================================== -- 统计今天入库的商品数量 SELECT 'SPU商品' AS data_type, COUNT(*) AS today_count, DATE(CURDATE()) AS statistics_date FROM shoplazza_product_spu WHERE DATE(create_time) = CURDATE() AND deleted = 0 UNION ALL SELECT 'SKU商品' AS data_type, COUNT(*) AS today_count, DATE(CURDATE()) AS statistics_date FROM shoplazza_product_sku WHERE DATE(create_time) = CURDATE() AND deleted = 0 UNION ALL SELECT '活跃店铺' AS data_type, COUNT(DISTINCT shop_id) AS today_count, DATE(CURDATE()) AS statistics_date FROM shoplazza_product_spu WHERE DATE(create_time) = CURDATE() AND deleted = 0 UNION ALL SELECT '活跃租户' AS data_type, COUNT(DISTINCT tenant_id) AS today_count, DATE(CURDATE()) AS statistics_date FROM shoplazza_product_spu WHERE DATE(create_time) = CURDATE() AND deleted = 0; -- ====================================== -- 5. 按租户统计今天入库的商品 -- ====================================== -- 按租户统计今天入库的商品分布 SELECT spu.tenant_id, COUNT(DISTINCT spu.id) AS spu_count, COUNT(DISTINCT sku.id) AS sku_count, COUNT(DISTINCT spu.shop_id) AS shop_count, COALESCE(SUM(sku.inventory_quantity), 0) AS total_inventory, COALESCE(AVG(sku.price), 0) AS avg_price FROM shoplazza_product_spu spu LEFT JOIN shoplazza_product_sku sku ON spu.id = sku.spu_id AND spu.tenant_id = sku.tenant_id AND sku.deleted = 0 WHERE DATE(spu.create_time) = CURDATE() -- 今天的日期 AND spu.deleted = 0 -- 未删除的SPU GROUP BY spu.tenant_id ORDER BY spu_count DESC; -- ====================================== -- 6. 查询今天入库商品的图片信息 -- ====================================== -- 查询今天入库商品的主图信息(从SPU表获取) SELECT spu.tenant_id, spu.shop_id, spu.shoplazza_id AS shoplazza_product_id, spu.image_src AS image_url, spu.image_width AS image_width, spu.image_height AS image_height, spu.image_path AS image_path, spu.image_alt AS image_alt, spu.create_time AS product_create_time, CASE WHEN spu.deleted = 1 THEN '已删除' ELSE '正常' END AS image_status FROM shoplazza_product_spu spu WHERE DATE(spu.create_time) = CURDATE() -- 今天入库的商品 AND spu.deleted = 0 -- 未删除的商品 AND spu.image_src IS NOT NULL -- 有图片的商品 ORDER BY spu.tenant_id, spu.shop_id, spu.shoplazza_id; -- ====================================== -- 7. 查询今天入库商品的详细信息(含图片) -- ====================================== -- 完整的今天入库商品信息(包含图片) SELECT spu.id AS spu_id, spu.tenant_id, spu.shop_id, spu.shoplazza_id AS shoplazza_product_id, spu.title AS product_title, spu.description AS product_description, spu.brief AS product_brief, spu.vendor AS brand_name, spu.category AS product_category, spu.category_path AS category_path, spu.handle AS product_handle, spu.tags AS product_tags, spu.published AS product_published, spu.published_at AS publish_time, spu.create_time AS spu_create_time, -- SKU信息聚合 COALESCE(sku_summary.sku_count, 0) AS variant_count, COALESCE(sku_summary.min_price, 0) AS min_price, COALESCE(sku_summary.max_price, 0) AS max_price, COALESCE(sku_summary.total_stock, 0) AS total_inventory, -- 主图信息(从SPU表直接获取) COALESCE(spu.image_src, '') AS main_image_url, COALESCE(spu.image_width, 0) AS main_image_width, COALESCE(spu.image_height, 0) AS main_image_height, COALESCE(spu.image_path, '') AS main_image_path, COALESCE(spu.image_alt, '') AS main_image_alt FROM shoplazza_product_spu spu -- 关联SKU统计信息 LEFT JOIN ( SELECT spu_id, tenant_id, COUNT(*) AS sku_count, MIN(price) AS min_price, MAX(price) AS max_price, SUM(inventory_quantity) AS total_stock FROM shoplazza_product_sku WHERE DATE(create_time) = CURDATE() -- 今天的SKU AND deleted = 0 GROUP BY spu_id, tenant_id ) sku_summary ON spu.id = sku_summary.spu_id AND spu.tenant_id = sku_summary.tenant_id WHERE DATE(spu.create_time) = CURDATE() -- 今天的SPU AND spu.deleted = 0 -- 未删除的SPU ORDER BY spu.create_time DESC; -- ====================================== -- 8. 分面数据诊断相关查询 -- ====================================== -- 8.1 检查category_path和category字段情况 -- 用于诊断分类分面数据是否完整 SELECT COUNT(*) as total_spu, COUNT(category_path) as has_category_path, COUNT(category) as has_category, COUNT(*) - COUNT(category_path) as null_category_path, COUNT(*) - COUNT(category) as null_category FROM shoplazza_product_spu WHERE tenant_id = 162 AND deleted = 0; -- 8.2 查看category字段的数据示例 -- 用于确认category字段的数据格式 SELECT id AS spu_id, title, category, category_path FROM shoplazza_product_spu WHERE tenant_id = 162 AND deleted = 0 AND category IS NOT NULL LIMIT 10; -- 8.3 检查option表的name字段值 -- 用于诊断specifications分面是否有正确的选项名称 SELECT DISTINCT name, position, COUNT(*) as count FROM shoplazza_product_option WHERE tenant_id = 162 AND deleted = 0 GROUP BY name, position ORDER BY position, name; -- 8.4 检查SKU的option1/2/3字段情况 -- 用于诊断SKU是否有选项值数据 SELECT COUNT(*) as total_skus, COUNT(option1) as has_option1, COUNT(option2) as has_option2, COUNT(option3) as has_option3, COUNT(*) - COUNT(option1) as null_option1, COUNT(*) - COUNT(option2) as null_option2, COUNT(*) - COUNT(option3) as null_option3 FROM shoplazza_product_sku WHERE tenant_id = 162 AND deleted = 0; -- 8.5 查看SKU的option值示例 -- 用于确认option值的数据格式 SELECT id AS sku_id, spu_id, title, option1, option2, option3 FROM shoplazza_product_sku WHERE tenant_id = 162 AND deleted = 0 AND (option1 IS NOT NULL OR option2 IS NOT NULL OR option3 IS NOT NULL) LIMIT 10; -- 8.6 关联查询SPU、option和SKU数据 -- 用于完整诊断分面数据流 SELECT spu.id AS spu_id, spu.title AS spu_title, spu.category, spu.category_path, opt.position AS opt_position, opt.name AS opt_name, sku.id AS sku_id, sku.option1, sku.option2, sku.option3 FROM shoplazza_product_spu spu LEFT JOIN shoplazza_product_option opt ON spu.id = opt.spu_id AND spu.tenant_id = opt.tenant_id AND opt.deleted = 0 LEFT JOIN shoplazza_product_sku sku ON spu.id = sku.spu_id AND spu.tenant_id = sku.tenant_id AND sku.deleted = 0 WHERE spu.tenant_id = 162 AND spu.deleted = 0 ORDER BY spu.id, opt.position, sku.id LIMIT 50; -- 8.7 统计有option定义的SPU数量 -- 用于确认有多少商品定义了选项 SELECT COUNT(DISTINCT spu_id) as spu_with_options FROM shoplazza_product_option WHERE tenant_id = 162 AND deleted = 0; -- 8.8 按position统计option的name值分布 -- 用于检查选项名称是否规范 SELECT position, name, COUNT(DISTINCT spu_id) as spu_count FROM shoplazza_product_option WHERE tenant_id = 162 AND deleted = 0 GROUP BY position, name ORDER BY position, spu_count DESC;