2017-05-30 98 views
2

我有以下表MySQL查询显示成分

mysql> select * from drink; 
+----+--------------+----------+---------+ 
| id | name   | location | alcohol | 
+----+--------------+----------+---------+ 
| 1 | Ginger Ale |  13 |  0 | 
| 2 | Whiskey  |  1 |  1 | 
| 3 | Vodka  |  2 |  1 | 
| 4 | Rum   |  3 |  1 | 
| 5 | Gin   |  4 |  1 | 
| 6 | Tequila  |  5 |  1 | 
| 7 | Triple Sec |  6 |  1 | 
| 8 | Cola   |  14 |  0 | 
| 10 | Cherry Vodka |  7 |  1 | 
| 11 | Sprite  |  15 |  0 | 
| 12 | Sour Mix  |  0 |  0 | 
| 13 | Lemon Juice |  0 |  0 | 
| 14 | Lime Juice |  0 |  0 | 
| 15 | Grenadine |  0 |  0 | 
| 16 | Orange Juice |  16 |  0 | 
+----+--------------+----------+---------+ 
15 rows in set (0.00 sec) 

mysql> select * from cocktail; 
+----+-------+----------------------------------+ 
| id | name | comment       | 
+----+-------+----------------------------------+ 
| 1 | Item1 | Whiskey Ginger     | 
| 2 | Item2 | Screwdriver      | 
| 3 | Item3 | Cherry Vodka and Sprite   | 
| 4 | Item4 | Bartender's Long Island Iced Tea | 
| 5 | Item5 | Long Island Iced Tea    | 
| 6 | Item6 | Gin and Sin      | 
+----+-------+----------------------------------+ 
6 rows in set (0.00 sec) 

mysql> select * from mix; 
+----+---------+------------+--------+ 
| id | drinkID | cocktailID | ounces | 
+----+---------+------------+--------+ 
| 1 |  1 |   1 | 4.00 | 
| 2 |  2 |   1 | 1.00 | 
| 9 |  10 |   3 | 1.00 | 
| 10 |  11 |   3 | 4.00 | 
| 11 |  5 |   4 | 0.75 | 
| 12 |  4 |   4 | 0.75 | 
| 13 |  6 |   4 | 0.75 | 
| 14 |  3 |   4 | 0.75 | 
| 15 |  7 |   4 | 1.00 | 
| 16 |  12 |   4 | 1.00 | 
| 17 |  8 |   4 | 1.00 | 
| 18 |  3 |   5 | 0.75 | 
| 19 |  5 |   5 | 0.75 | 
| 20 |  4 |   5 | 0.75 | 
| 21 |  6 |   5 | 0.75 | 
| 22 |  12 |   5 | 2.00 | 
| 23 |  8 |   5 | 1.00 | 
| 24 |  7 |   5 | 1.00 | 
| 25 |  5 |   6 | 2.00 | 
| 26 |  13 |   6 | 2.00 | 
| 27 |  15 |   6 | 2.00 | 
| 28 |  16 |   6 | 2.00 | 
| 33 |  3 |   2 | 1.50 | 
| 34 |  16 |   2 | 4.00 | 
+----+---------+------------+--------+ 
24 rows in set (0.00 sec) 

从这些表我想创建一个具有ID,评论,成分名称,并盎司数的连接表。

到目前为止,我有这个查询,但我不断收到错误,我不知道哪里出错了。

select cocktail.comment 
     , drink.name 
     , mix.ounces 
    from cocktail 
    join mix 
    on mix.drinkID = drink.ID 
    join cocktail 
    on mix.cocktailID = cocktail.id; 

我认为这有什么不对我加入语句,但是在MySQL错误是不明确的,以我

ERROR 1066 (42000): Not unique table/alias: 'cocktail' 

会有人能够给我提供一些指导?谢谢!

+0

你能提供表格结构吗? –

+0

请注意,mix table上的代理id没有实际用途。 – Strawberry

回答

1

您正在查询的是拨打cocktail表两次。如果你想这样做,你需要使用一个别名给呼叫提供唯一的名称,但看起来你缺少JOINdrink表。看起来像你想要的:

select 
    c.comment, 
    d.name, 
    m.ounces 
from drink d 
inner join mix m 
    on m.drinkID = d.ID 
inner join cocktail c 
    on m.cocktailID = c.id; 

这是一个demo。这个版本和你的版本不同之处在于它包含一个致电drink表格以获取配料的名称。