【发布时间】:2021-10-04 20:18:51
【问题描述】:
我正在使用 NodeJS、MySQL 和 React 在购物网站上练习我的(初学者)技能。我需要查询数据库以从用户购物车表中选择产品,从产品表中选择产品详细信息(图像、名称、库存量等)并检查产品是否已保存(在保存的表中)
这是表的架构:
- 产品
id | Name | Price | Description | Vendor | Tag | Rating | Image | AmountInStock
- 已保存
id | user_ID | product_id
- 购物车
id | user_ID | product_id
这是我目前写的查询:
SELECT c.id, p.name as product_name, c.user_id, c.product_id,
COUNT(c.product_id) as product_count, p.price, p.description,
p.vendor, p.tag, p.rating, p.image, p.amountInStock,
COUNT(s.product_id) as inSaved
FROM cart c, products p, saved s
WHERE p.id = c.product_id
AND C.user_id = '13'
GROUP BY c.product_id, c.user_id
HAVING COUNT(c.product_id) > 0;
【问题讨论】:
-
你没有提供任何Schema,你只是列出了列名;提供模式将是 create table 语句,包括数据类型、默认值、键、约束等。
-
向我们展示您想要的输出
-
您按了太多次
comma键。这不可避免地会导致JOIN错误。使用联接编写查询更像这样:SELECT ... FROM t1 JOIN t2 ON ... JOIN t3 ON ... etc;如果这样做,您会注意到缺少s逻辑。还有其他设计问题。但这是您当前声明的主要问题之一。另外,查看LEFT JOIN或NOT IN或NOT EXISTS,这将有助于is / is not saved 逻辑。