2011-12-22 21 views
0

我在MySQL的褲子一列基於最高值選擇行,所以我真的需要一些幫助,這一點,請:在其他表在MySQL和PHP

我有一個表,如:

Pizza    Votes 
------------------------ 
Margherita   1 
Pepperoni   7 
Sloppy Giuseppe 3 

和另一表所示:在第一個表

ID Pizza    Recipe       Votes 
------------------------------------------------------------- 
1  Margherita   Jamie Oliver     1 
2  Pepperoni   Hugh Fearnley Whittingstall 7 
3  Sloppy Giuseppe Gino D'Acampo     3 
4  Margherita   Jamie Oliver     1 
5  Pepperoni   Jamie Oliver     7 
6  Sloppy Giuseppe Jamie Oliver     3 
7  Sloppy Giuseppe Hugh Fearnley Whittingstall 3 

通知,辣香腸比薩餅擁有最多票數,所以我想從第二個表WHERE比薩柱獲得的行包含3 ns「辣香腸」。

在僞代碼:SELECT * FROM the second table WHERE the Pizza column = the pizza from the first table with the most votes

到目前爲止,我有這樣的:'SELECT * FROM pp_pizzas INNER JOIN pp_recipes ON pp_pizzas.pizza = pp_recipes.pizza'

我真的不明白這一切的MySQL的東西,所以如果我能要求一個解釋以及指針/答案我會非常感激,以便下次能夠學習!

非常感謝大家!

回答

1

你可以嘗試:

SELECT * FROM pp_recipes 
WHERE Pizza = 
    (SELECT Pizza FROM pp_pizzas 
    ORDER BY Votes DESC LIMIT 1) 

您也可以嘗試:

SELECT * FROM pp_recipes 
WHERE Votes = (SELECT MAX(Votes) FROM pp_recipes) 
+0

也許DESC代替DOWN? – mgm 2011-12-22 01:31:27

+0

@Gabriel:我真的不明白爲什麼我的鍵盤寫下來......真的:)謝謝 – Marco 2011-12-22 01:33:22

+0

它發生了,也許它來自另一種編程語言:)) – mgm 2011-12-22 01:45:12

0

如果你正在尋找從您必須使用左邊的第二個表捕獲所有的記錄到位INNER JOIN的加入。

試試這個,讓我知道,如果是你需要的東西:

SELECT * 
FROM 
    pp_pizzas 
LEFT JOIN 
    pp_recipes 
ON pp_pizzas.pizza = pp_recipes.pizza 
2

有很多方法可以做到這一點,但對於這樣一個簡單的查詢(和清晰度)我會去用子查詢而不是加入。類似:

SELECT * FROM `pp_recipes` WHERE pp_recipes.pizza = (SELECT `pizza` FROM pp_pizzas ORDER BY votes DESC LIMIT 1); 

子查詢返回從一行(辣),其隨後被用作在主查詢的條件只有一列。