2017-05-30 1 views
0

正しい出力を得るために2つのテーブルの間にINNER JOINを持つSELECTを取得することに問題があります。SQL Server内部で2つのテーブルを結合し、2つのフィールドでフィルタリングして余分なレコードを取得する

SELECT * 
FROM PERSON_TABLE 
WHERE MYSOMETHINGID = 123 

結果は、私がインナーにしたい

ID PERSON_ID  PERSON  IS_SELECTED IS_BACKUP MYSOMETHINGID 
2 -1   PERSON1 0    0   123 
3 12   PERSON2 0    1   123 
4 13   PERSON3 1    0   123 
5 15   PERSON4 0    1   123 
6 22   PERSON5 0    0   123 

select * 
from ASSIGNED_TABLE 
where MYSOMETHINGID = 123 

ID PERSON_ID  PERSON  MYSOMETHINGID 
3 12   PERSON2 123 
4 13   PERSON3 123 
5 15   PERSON4 123 

ですが、両方の会社に参加して= 1 IS_SELECTEDでレコードのみを選択して、PERSON_TABLEからレコードがASSIGNED_TABLE

に存在する場合はここに私のクエリがあります

IS_SELECTED = 1なぜ私が1の代わりに3つのレコードを取得するのか分かりません。不思議なことにIS_SELECTEDは3つのレコードすべてに対して1、すべてのIS_BACKUPについて0です。

助けを歓迎します。ありがとう。

+3

私ができます」そのクエリがどのようにそれらの結果を返すかを見てください。 DDLステートメント、データのINSERT、予想される結果など、完全なレプロをお願いします。 これを行うと、自分で問題が見つかる可能性があります。もしそうでなければ、人々があなたの問題を調べることは容易です。 –

+0

これらの結果を得るための唯一の方法は、コミットされていない更新を使用して異なる接続があり、別の接続または別のデータベースを使用して別のデータで実行している場合です。提示されたデータが与えられた場合、クエリは必要に応じて動作するはずです。だから何かが続いている。 Person_tableに異なるmysomethignIdsで複数回リストされたperson_IDがある場合... – xQbert

+0

person_tableにperson_ID 13のレコードがいくつありますか?ちょうど1?それ以上の場合は、クエリに問題があります。 – xQbert

答えて

0

は、私はあなたにもmysomethingidに参加する必要があると思う:= 1

select * 
from ASSIGNED_TABLE AT inner join 
PERSON_TABLE PT ON 
AT.PERSON_ID = PT.PERSON_ID 
where AT.MYSOMETHINGID = 123 AND PT.IS_SELECTED = 1 
+0

こんにちは、私はmysomethingidを追加する必要はありません。私のテストのためにレコードのグループを除外するテストです。そのIDは全部ではなく1レコードを返すべきです。 – John

+0

@John。 。 。両方のテーブルにフィルタを適用する必要があります。そのためには、 'JOIN'が最も簡単な方法です。それ以外の場合は、サンプルデータと質問との関連性はありません。 –

-1

もう一つの方法は、行だけを選択することで、この

select * 
    from ASSIGNED_TABLE AT 
inner join PERSON_TABLE PT 
    on AT.PERSON_ID = PT.PERSON_ID 
where PT.IS_SELECTED = 1 AND MYSOMETHINGID = 123 
+0

なぜdownvote?理由を投稿する必要があります –

0

は試してみてくださいis_selectedどこ

select * 
from ASSIGNED_TABLE AT inner join 
    PERSON_TABLE PT 
    on PT.IS_SELECTED = 1 AND 
     AT.PERSON_ID = PT.PERSON_ID AND 
     AT.MYSOMETHINGID = PT.MYSOMETHINGID 
where AT.MYSOMETHINGID = 123; 
関連する問題