2011-08-13 10 views
1

特定のSQLクエリに関するヒントを少し持っています。私は2つのテーブルのデータを結合する必要がありますが、3つ目のテーブルを使用してデータを制限します(必ずしもそれを取得する必要はありません)。次のように表には、次のとおりです。複数のテーブルからデータを取得するために複数のテーブルの基準を使用する必要があります

MEMBERS(member_id,first_name,last_name) 
    MEMBERS_GROUPS(member_id,group_id) 
    CHARGES(charge_id,member_id,charge_amount,status) 

は、私は特定のグループのすべてのメンバーのすべての料金を見つける必要があるが、私はまた、MEMBERSテーブルから最初と最後の名前をつかむしたいです。私がこれまでに作ってみたクエリは次のとおりです。

SELECT c.*, m.first_name, m.last_name 
FROM charges c, members_groups mg, member m 
WHERE c.member_id=mg.member_id 
    AND mg.group_id = 1 
    AND c.status='Valid' 
    AND c.member_id = m.member_id 

を...しかし、私は必要なデータを返しませんどちらも:

select c.*, m.first_name, m.last_name 
FROM charges c 
LEFT JOIN member m 
    ON c.member_id=m.member_id 
INNER JOIN members_groups mg 
    ON mg.group_id=1 

私も試してみました。私はこれを考えすぎていると確信していますが、私の人生は正しい価値を得ることができません。私はデカルト製品であると思われるものを手に入れています - それは明らかに、あまりにも多くの行と悪いデータを戻しています。

答えて

0

はおそらく、あなたが必要なものもINNERがmg.member_id = m.member_idmembers_groups にそれらの行にJOINを制限することです:

SELECT c.*, m.first_name, m.last_name 
FROM charges c 
LEFT JOIN member m 
    ON c.member_id=m.member_id 
INNER JOIN members_groups mg 
    ON mg.group_id=1 
    AND mg.member_id = m.member_id 
+0

*は額*完全ダム萌芽します。私のオリジナルのクエリは、メソッドにさらに追加されているため、機能しませんでした。長い話を簡単に言えば、私が拡張した "AND"クエリは、あなたが今投稿したクエリに加えて機能します。だから、ありがとう。 –

関連する問題