2011-10-25 14 views
0

私は2つのMySQLテーブル:メンバーとPOSTSを持っています。SQLあらかじめ定義された行の最大値

POSTSテーブルにいくつかの(> 0)レコードがあるすべてのUSERを選択=> そこから、MEMBERSテーブルで最大のADS値を持つUSERを選択します。

私は、次のことを試みた:

"SELECT * FROM posts WHERE user=(select user from members where ads=(select Max(ads) from members))' 

をしかし、これはMEMBERSで最大値を持つユーザーは、POSTSテーブルにはレコードを持っていないというバグが、持っている - SQLは、空の結果を返します。

私は、MySQLにすべての行からではなく、あらかじめ定義された値から最大値を選択するようMySQLに指示しなければならないと考えていますが、どうすればよいかわかりません。

誰かが私を助けることができますか?

+0

使用に列型と制約(PKとFK)を含め、正確なデータモデルを、ご提示ください。いくつかの例示的なデータおよび期待される結果も有用であり得る。 –

答えて

1
SELECT m.* 
FROM members AS m 
WHERE EXISTS 
     (SELECT * 
     FROM posts AS p 
     WHERE p.member_id = m.member_id 
    ) 
ORDER BY ads DESC 
LIMIT 1 
1

これは機能しますか?

select m.member_id, max(p.ads) 
    from members m 
    join posts p 
     on m.member_id = p.member_id 
    group by m.member_id 
    order by max(p.ads) desc 
    limit 1