我有这样的表结构: 菜单
id | name
1 | Electronics
2 | Cars
3 | Bikes
4 | Music
产品
id | brand_name | product_name | price | description | ...
1 | Lenovo | Notebook ABC | 800 | ... | ...
2 | Apple | iPad Mini | 400 | ... | ...
3 | Bonton | Taylor Swift | 15 | ... | ...
4 | BMW | BMW 3 2010 | 30000 | ... | ...
类别
id_product | id_menu
1 | 1
1 | 7
1 | 9
4 | 2
3 | 10
我试图打印出每个品牌的所有类别,并从每个类别打印出按最高价格排序的 10 个产品,因此输出如下所示:
Apple - Electronics - iPad Mini - 400
Apple - Electronics - iPad 2 - 300
Apple - Electronics - iPad - 180
Bonton - Music - Taylor Swift - 15
Bonton - Music - U2 - 13
...
缺乏包含所有品牌的表格让我的生活变得更加艰难,所以我可能会将其添加到计划中。但是我可以请你们帮助我进行查询,以获取我概述的信息吗?
非常感谢,现在对我来说看起来太多了。
编辑:
当我使用 PHP 时,我认为它也可以在 2 个查询中(我无法用一个查询来做到这一点,但在 PHP 中也很难处理 2 个 MySQL 查询)
最佳答案
尝试
set @num := 0, @brand := '';
SELECT p.brand, m.name,p.name, p.price,
@num := if(@brand = p.brand, @num + 1, 1) AS row_number,
@brand := p.brand AS dummy
FROM category c
INNER JOIN products p
ON p.id = c.id_product
INNER JOIN menu m ON m.id = c.id_menu
GROUP BY p.brand, p.price, p.name
HAVING row_number < 10
ORDER BY p.price DESC;
不确定这是否完全符合您的期望。希望对您有所帮助。
关于php - MySQL - 从3个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038332/