Wpis z mikrobloga

#mssql #bazydanych
Mirki potrzebuje małej pomocy otóż mam taką tabelę
ID Name
1 art
1 sss
1 dss
1 ffr
2 sss
2 dss
3 saa
3 ftrt

Potrzebuję wyciągnąć te id które mają Name= sss i dss czyli w przypadku powyżej powinno mi wyciągnąć ID 1 i 2.
takie zapytanie nie zadziała
_SELECT * FROM Table WHERE Name='sss' AND Name='dss'_
potrzeba chyba by coś z agregować np Name=Name?
Jak to rozwiązać koledzy jest to w ogóle możliwe?
  • 25
Nie mam gdzie tego przetestować, ale poszedłbym w tym kierunku:

SELECT DISTINCT a.id FROM Table a INNER JOIN Tabela AS b ON a.id <> b.id AND b.Name IN ('sss','dss') WHERE a.Name IN ('sss','dss')
@synec: Select * from table where name in (wartosci) into #temp

Select distinct t.id from #temp t join #temp t2 on t.id =t2.id and t.name <> t2.temp

Tak chyba najłatwiej. Możesz w jednym zapytaniu oczywiście, ale tak chyba bardziej czytelnie a pisze z telefonu
I nie pamiętam gdzie "into" powinno być
@synec: Nie wiem czy zadziała to w mssqlu (nie mam pod ręką, ale w MySQL działa) i prawdopodobnie będzie cholernie wolne, ale możesz zrobić takie coś:
SELECT id FROM Table WHERE id IN(SELECT id FROM Table WHERE Name ='sss') AND id IN (SELECT id FROM Table WHERE Name ='dss'); .