这是我的类别结构:
• Department
• Category
• Sub-Category
这是我的数据库:
我想展示来自特定部门的 6 个随机产品。例如,当用户查看部门页面时,我只想要该部门中的所有产品。我遇到的问题是我无法找到只获得部门的方法,出于某种原因,我只能从类别中获得产品......我需要再上一层。
这是我的 SQL:
SELECT *
FROM products p
LEFT JOIN products_categories pc
ON p.product_id = pc.product_id
LEFT JOIN categories c
ON pc.category_id = c.category_id
WHERE c.category = 119
ORDER BY RAND()
LIMIT 6
119 将是部门 ID,但我的查询是空的,因为我不能走那么远。
编辑 我创建了一个 SQLFiddle 让每个人都更轻松......非常酷的工具;)
http://sqlfiddle.com/#!2/964ed/3
编辑我想我需要更好地解释
所以我有我的第三类深;部门、类别和子类别。该部门没有与之相关的产品,所有产品都与子类别相关联。由于我的产品与我的部门没有直接关联,我怎么能进行查询以检索部门下的所有内容?我正在尝试将所有东西都放在 Firearms 下,因为它拥有最多的产品。当我使用 Firearms id (119) 查询时,我什么也得不到?但是当我使用其中一个子类别 ID 时,我会得到结果吗?所以,我猜我需要做某种类型的子选择或其他东西,但不确定。希望这可以解决问题:)
预期结果
使用for 119
,我想得到以下记录:category_id
firearms
(143, 131, 'single-shot')
(144, 131, 'semiautomatic')
(145, 131, 'bolt-action')
(146, 131, 'pump & lever action')
(171, 130, 'bolt-action')
(174, 136, 'safe')
(178, 130, 'single-shot')
(179, 130, 'pump & lever action')
(180, 130, 'semiautomatic')
(182, 181, 'shotgun ammunition')
(183, 181, 'rimfire ammunition')
(184, 181, 'centerfire ammunition')
(185, 181, 'handgun ammunition')
(186, 120, 'cooking')