php - MySQL - 从3个表中获取数据

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

最佳答案

尝试

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/

相关文章:

c# - 带有参数的mysql odbc插入

javascript - 提交表格前检查条款和条件

php - 如果 Count 为零,如何在 Laravel 中获取记录

php - PDO mysql : How to know if insert was successful

重定向后PHP session 丢失

mysql - 在执行 case 语句之前对 sql 查询进行排序

mysql - Perl 与 inet_aton

mysql - 从多个表中检索记录,有些是不同的,有些不是

sql - Postgresql LATERAL 与 INNER JOIN

sql - 将2个SQL SELECT结果集合并为一个