2011-12-22 14 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 

通知は、ペパロニのピザは、最も多くの票を持っているので、私は2番目のテーブルWHEREピザ列から行を取得したいのですが対照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

多分、DOWNの代わりにDESC? – mgm

+0

@Gabriel:なぜ私のキーボードがDOWNを書いたのか分かりません。本当に:)ありがとう – Marco

+0

これは別のプログラミング言語から来たのかもしれません:)) – mgm

0

を2番目のテーブルからすべてのレコードをキャッチするために探している場合は、LEFTを使用する必要があります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); 

サブクエリ戻るプライマリクエリ内の条件として使用されている一列(ペパロニ)から1列のみ。