複数の値を持つWhere句を使用するSQLステートメント

Translate

次のフィールドを持つ複数の行を持つテーブルがあります。

PersonName SongName Status

複数選択リストボックスから選択した名前を使用して値を取得し、where句を実行して、選択したユーザーがすべて再生できる曲名を表示することで、ステータスが完了します。

例えば:

 PersonName      SongName    Status 
 Holly           Highland    Complete
 Holly           Mech        Complete 
 Ryan            Highland    Complete

リストボックスからHollyとRyanを選択してボタンを押すと、クエリにはHighlandが表示されます。これは、両方が知っていることです。

This question and all comments follow the "Attribution Required."

すべての答え

Translate

これを試して:

select songName from t
where personName in ('Ryan', 'Holly')
group by songName
having count(distinct personName) = 2

持っている人の数は人の数と一致する必要があります。ステータスも必要な場合Completeこれを使ってwhere前の句の代わりに:

where personName in ('Ryan', 'Holly') and status = 'Complete'
ソース
sll
Translate
SELECT PersonName, songName, status
FROM table
WHERE name IN ('Holly', 'Ryan')

パラメータ化されたストアドプロシージャを使用している場合:

  1. カンマ区切りの文字列を渡します
  2. 特殊関数を使用して、コンマ区切りの文字列をテーブル値変数に分割します
  3. 使用するINNER JOIN ON t.PersonName = newTable.PersonName渡された名前を含むテーブル変数を使用する
ソース
Translate
Select t1.SongName
From tablename t1
left join tablename t2
 on t1.SongName = t2.SongName
    and t1.PersonName <> t2.PersonName
    and t1.Status = 'Complete' -- my assumption that this is necessary
    and t2.Status = 'Complete' -- my assumption that this is necessary
    and t1.PersonName IN ('Holly', 'Ryan')
    and t2.PersonName IN ('Holly', 'Ryan')
ソース
Leave a Reply
You must be logged in to post a answer.
著者について