2017-06-06 4 views
0

この問題を解決するのが難しいです。私はMicrosoft SQL Server 2014(バージョン12.0.4100.1)を使用しています。SQL Server:その行が見つかったIN値を取得

私は2つのテーブルcontactsbusinessを持っています。連絡先ユーザー名の配列があります。

SELECT business.id, business.name, business.notes 
FROM business 
WHERE business.id IN (SELECT contacts.business_id 
         FROM contacts 
         WHERE contacts.username IN ('username1', 'username2', 'username3')) 

このクエリが正常に機能しているが、私はまたのためにすべての値を選択する方法を見つけ出すことはできません。私はこのように、WHEREのサブクエリで、このユーザ名の配列からビジネスリストを取得しています行が見つかりました。例えば:、私はすべてのビジネスを来た何の接触から簡単に見ることができる結果を取得

business.id = 1 
business.name = 'Business 1' 
business.notes = 'Notes from business 1.' 
contacts.username = 'username1' 

:私は、ユーザー名「USERNAME1」との接触からビジネスをフェッチする場合、私はそれを取得し、その結果を見てみたいです。

ありがとうございます!

編集:ビジネスごとに複数の連絡先がある可能性があるので、INNER JOINを実行すると、連絡先ごとに重複したビジネス結果が返されます。サブクエリで選択された連絡先が正確にわかっています。

+1

'INNER JOIN'一般的なビジネスIDの' contacts'テーブル。 –

+0

ビジネスごとに複数の連絡先が存在する可能性があるので、「INNER JOIN」を実行すると、連絡先ごとに重複したビジネス結果が返されます。サブクエリで選択された連絡先が正確にわかっています。 – devrique

+0

おっと、ごめんなさい!その方法は結果を繰り返すことではありません、ありがとう! – devrique

答えて

3

私はあなたがjoinを探していると思う:

SELECT b.id, b.name, b.notes, c.username 
FROM business b JOIN 
    contacts c 
    ON b.id = c.business_id 
WHERE c.username IN ('username1', 'username2', 'username3'); 
+0

ここで問題となるのは、すべてのビジネスに複数の連絡先が存在する可能性があるため、「INNER JOIN」を実行すると連絡先ごとに重複したビジネス結果が返されることです。サブクエリで選択された連絡先が正確にわかっています。 – devrique

+0

@devrique。 。 。これはあなたのリストにある連絡先だけを選択します。すべての連絡先に対して行を生成しません。ビジネスが複数の連絡先と一致する場合、どちらを選択しますか? –

+0

申し訳ありません今日はちょっと濃密です。このようにビジネスの結果が繰り返されていないことは事実です。私はすでにそれを試したと思って、それはうまくいかなかった。どうもありがとうございます! :) – devrique

関連する問題