2017-04-07 10 views
-1

私は2つのテーブル、キャッチし、メンバーを持っています。それはフィッシングクラブのウェブサイトです。 私は名前、体重、Spieciesを示すリストを作りたいです。しかし、rekordリストのように、それぞれのspieciesのトップウェイトのみ。 2つのテーブルはこのように見えます。サブクエリの問題

メンバー:

  • MEMBERID
  • ファーストネーム
  • Secondname

キャッチ:

  • MEMBERID(FK)
  • Spiecies
  • 重量

これは唯一名と重量を示し、IはSpieciesが示さ取得can't。

SELECT 
CONCAT(Firstname, ' ' ,Secondname) AS 'Name', 
Allcatch.Rekord 
FROM Members 
JOIN 
(SELECT 
MAX(Weight) AS 'Rekord', MemberID 
FROM Catch 
GROUP BY MemberID) AS Allcatch 
ON Allcatch.MemberID = Members.MemberID; 
-- ORDER BY Allcatch.Weight DESC 
+0

左揃えのSQLは読みにくいです... – jarlh

+0

どのdbmsを使用していますか?同様にフォーマットされたテキスト - (。そこにいくつかの製品固有の機能) – jarlh

+0

いくつかのサンプル・テーブル・データと予想される結果を追加します。 – jarlh

答えて

0

これを試してみてください:

SELECT 
CONCAT(Firstname, ' ' ,Secondname) AS 'Name', 
Allcatch.Rekord, Allcatch.Spiecies 
From Members 
INNER JOIN Catch ON Catch.MemberID = Members.MemberID 
INNER JOIN 
(SELECT 
max(Weight) AS 'Rekord', Spiecies 
FROM Catch 
GROUP BY Spiecies) AS Allcatch ON Allcatch.Rekord = Catch.Weight AND Allcatch.Spiecies = Catch.Spiecies 

を。

+0

私は言う。 エラーコード:1054不明な列「Allcatch」「フィールドリスト」で –

+0

それはTREすべての3つを示しているが、エラーは右、今表示されていない、間違った結果 –

+0

を示して? –

0

私はoracle構文に関してROW_NUMBER()関数を使用して、以下のクエリを額装しています。

SELECT 
Firstname||Secondname AS 'Name', 
Allcatch.Rekord, 
Allcatch.Spiecies 
From Members 
JOIN 
(SELECT 
Weight, MemberID, Spiecies,row_number() over (partition by MemberID order by Weight desc) as rn FROM Catch) AS Allcatch 
ON Allcatch.MemberID = Members.MemberID 
where Allcatch.rn = 1; 
+0

それは理解できないOVER 私はMysql Workbenchを使用しています –

+0

Ok。質問にmysqlタグを付けてください –

関連する問題