Declaração SQL usando a cláusula em que os valores são múltiplos
tenho uma tabela que tem várias linhas com os seguintes campos:
PersonName SongName Status
quero usar os nomes seleccionados de uma lista de selecção múltipla, que posso obter os valores, e depois fazer uma cláusula onde para mostrar os nomes das músicas que as pessoas seleccionadas podem tocar, pelo que o estado está completo.
por exemplo:
PersonName SongName Status
Holly Highland Complete
Holly Mech Complete
Ryan Highland Complete
Se eu seleccionar a Holly e o Ryan da lista e carregar no botão, a consulta deve mostrar ao Highland, pois é isso que ambos querem. saber.
30
3 answers
Tenta isto:
select songName from t
where personName in ('Ryan', 'Holly')
group by songName
having count(distinct personName) = 2
O número no Ter deve corresponder à quantidade de pessoas. Se também necessitar que o Estado seja Complete
use esta cláusula where
em vez da anterior:
where personName in ('Ryan', 'Holly') and status = 'Complete'
56
Author: Mosty Mostacho, 2012-04-04 14:11:07
SELECT PersonName, songName, status
FROM table
WHERE name IN ('Holly', 'Ryan')
Se estiver a utilizar o procedimento de armazenamento parametrizado:
- passar em cadeia separada por vírgulas
- usar uma função especial para dividir o texto separado por vírgulas na variável valor da tabela
- usar
INNER JOIN ON t.PersonName = newTable.PersonName
usando uma variável da tabela que contém os nomes passados
8
Author: sll, 2012-04-04 14:54:50
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')
0
Author: Sam DeHaan, 2012-04-04 14:09:25