2017-10-25 5 views
1

私は3つのテーブルA、B、Cを持っています。すべてのテーブルには、共通のメンバーIDがあります。 AにはユニバーサルIDであるメジャーIDがあります。 BはCのグループ番号と同じグループIDを持っています。2つの列から一致しないレコードを取得するためのHiveqlクエリ

グループid <>グループ番号のメンバーIDのメジャーID、メンバーID、グループID、グループ番号を取得したいクエリを書きたいと思います。

+0

お読みください試してみてください[どのような状況下で、私はより速く答えを得るために、私の質問に、「緊急」または他の同様の句を追加できますか?](// meta.stackoverflow.com/q/326569) - 要約は、これはボランティアに対処する理想的な方法ではなく、おそらく回答を得ることに非生産的であるということです。これをあなたの質問に追加しないでください。 – halfer

+0

HQLクエリを作成しようとしましたか?あなたは試してみてどうでしたか? – halfer

答えて

0

これは

Select A.id ,B.group_id ,C.group_number ,C.member_ids from A join B on (A.member_ids = B.member_ids) right join C on (B.member_ids = C.member_ids and B.group_id != C.group_number) 
+0

しかし、一致がなければ、右のジョインは左の列にNULLを設定します。だから私はそれがb.groupid <> c.group_numberとしてWhere節と内部結合であると思っています。 –

+0

右の結合の背後にある理由は、グループIDが< >のグループ番号のため、条件が右側のテーブルにあるようなメンバーIDだけが必要なことです。'なぜ私は右の結合を使用したのですか? 'member idsがnullでない場合'を使用するか、または内部結合も機能します。 –

+1

ありがとうSahil!あなたの助けに感謝! –

関連する問題