Příkaz SQL pomocí klauzule Where s více hodnotami

Translate

Mám tabulku, která má více řádků s následujícími poli:

PersonName SongName Status

Chci použít jména vybraná z vícenásobného seznamu výběrů, který mohu načíst hodnoty, a pak udělat klauzuli where, takže zobrazuje názvy skladeb, které mohou všichni vybraní lidé hrát, proto je stav úplný.

Například:

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

Pokud vyberu Holly a Ryana ze seznamu a stisknu tlačítko, měl by dotaz zobrazit pouze Highland, protože to oba vědí.

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

Všechny odpovědi

Translate

Zkuste to:

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

Počet v by měl odpovídat počtu lidí. Pokud také potřebujete stavCompletepoužij totowhereklauzule namísto předchozí:

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

Pokud používáte parametrizovaný uložený postup:

  1. Předejte řetězec oddělený čárkami
  2. Použijte speciální funkci k rozdělení řetězce odděleného čárkami do proměnné hodnoty tabulky
  3. PoužitíINNER JOIN ON t.PersonName = newTable.PersonNamepomocí proměnné tabulky, která obsahuje předané názvy
Zdroj
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')
Zdroj
Leave a Reply
You must be logged in to post a answer.
O autorovi