
SELECT
p.*,
MIN(wp.price * (1 + wpe.addition / 100) * (1 + IFNULL(wpc.addition, 0) / 100)) AS minimal_price,
COUNT(p.id) AS total_found
FROM products AS p
JOIN warehouses_products AS wp
ON p.id=wp.product_id
JOIN warehouses_permissions AS wpe
ON wpe.warehouse_id=wp.warehouse_id
LEFT JOIN warehouses_permissions_categories AS wpc
ON wpc.warehouse_permission_id=wpe.id
WHERE wpe.user_id=1 AND (wpc.id IS NULL OR wpc.category_id=p.category_id)
GROUP BY p.id问题:如果我想添加这个特性,我应该如何修改我的数据库结构和查询:用户可以拥有“共享”仓库--仓库,其中包含来自给定warehouse_permission的产品。
如果希望共享共享仓库,则开始递归。
有什么想法吗?
发布于 2013-08-05 10:34:52
OUTER JOIN。有两种类型:LEFT OUTER JOIN和RIGHT OUTER JOIN。与INNER关键字一样,OUTER关键字是可选的。对于每个LEFT JOIN,都有一个逻辑上等价的RIGHT JOIN。因此,RIGHT JOIN是罕见的。通过实例比较了LEFT JOIN和RIGHT JOIN在SO上的搜索结果。发布于 2013-08-06 06:33:04
我会合并warehouses_permissions & warehouse_permissions_categories来解决大部分问题。如果以后需要的话,您可以将其划分或提出其他结构。
https://stackoverflow.com/questions/18054975
复制相似问题