MySQL - 从3个表中获取数据

时间:2014-11-20 11:21:56

标签: php mysql sql join

我有这种表结构: 菜单

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查询)

1 个答案:

答案 0 :(得分:0)

尝试

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;

不确定这完全符合您的预期。希望它有所帮助。