加入许多表时出现问题

时间:2015-07-29 19:04:01

标签: mysql database join

我有四张桌子:

products                          sizes
-----------------------------     -----------------------------------
| product_id | product_name |     | pizza_size_id | pizza_size_name |
-----------------------------     -----------------------------------
|     39     | Italyan      |     |       1       | Small           |
|     40     | Classic      |     |       2       | Medium          |
|     41     | Lamb         |     |       3       | Large           |
|     42     | Evi          |     -----------------------------------
-----------------------------
menu_details
--------------------------------------------------------
| id | order_details_fk | pizza_menus_fk | products_fk |
--------------------------------------------------------
| 17 |        132       |       92       |     39      |
| 18 |        132       |       92       |     40      |
| 19 |        132       |       92       |     41      |
| 20 |        132       |       92       |     42      |
--------------------------------------------------------
pizza_menus                      
--------------------------
| id | menu_id | size_id |
--------------------------
| 25 |    92   |    1    |
| 26 |    92   |    1    |
| 27 |    92   |    1    |
| 28 |    92   |    2    |
--------------------------

这是我的SQL代码:

SELECT   DISTINCT products.product_name, sizes.pizza_size_name 
FROM     products, menu_details, pizza_menus, sizes 
WHERE    products.product_id = menu_details.products_fk 
AND      menu_details.pizza_menus_fk = pizza_menus.menu_id 
AND      pizza_menus.size_id = sizes.pizza_size_id 
AND      menu_details.order_details_fk = 132

我想要的输出

----------------------------------
| product_name | pizza_size_name |
----------------------------------
|    Italyan   |      Small      |
|    Classic   |      Small      |
|    Lamb      |      Small      |
|    Evi       |      Medium     |
----------------------------------

我得到的输出

----------------------------------
| product_name | pizza_size_name |
----------------------------------
|    Italyan   |      Small      |
|    Classic   |      Small      |
|    Lamb      |      Small      |
|    Evi       |      Small      |
|    Italyan   |      Medium     |
|    Classic   |      Medium     |
|    Lamb      |      Medium     |
|    Evi       |      Medium     |
----------------------------------

我知道这么简单的问题有太多的表格,但无论如何 我非常感谢你的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

menu_detailspizza_menu之间的关联错误,因此我将menu_details标记为:

--------------------------------------------------------
| id | order_details_fk | pizza_menus_fk | products_fk |
--------------------------------------------------------
| 17 |        132       |       25       |     39      |
| 18 |        132       |       26       |     40      |
| 19 |        132       |       27       |     41      |
| 20 |        132       |       28       |     42      |
--------------------------------------------------------

这是我的新SQL:

SELECT   DISTINCT products.product_name, sizes.pizza_size_name 
FROM     products, menu_details, pizza_menus, sizes 
WHERE    products.product_id = menu_details.products_fk 
AND      menu_details.pizza_menus_fk = pizza_menus.id 
AND      pizza_menus.size_id = sizes.pizza_size_id 
AND      menu_details.order_details_fk = 132
相关问题