webForumDet fria alternativet

Se om posterna innehåller minst två olika id

Databaser & SQL

2 svar · 438 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Har en tabell med ID och AltID.

ID  AltID
1    1
2    2 
2    3
1    1
3    2

Skulle vilja kolla om ID innehåller minst två olika AltID och i så fall köra en select, i annat fall returnera -1. I fallet ovan så skulle id 2 vara OK men inte id 1 eller 3.

Alltså så här nånting illustrerat med lite kvasikod:


SELECT DISTINCT TOP 2 AltID FROM Tabell WHERE ID = 1  

om svaret ovan returnerar 2 rader:

SELECT ...

else

return -1
Medlem sedan dec. 19996 721 inlägg
#2

Att returnera -1 känns lite onödigt och tillför bara komplexitet. Ett tomt resultatset borde vara en minst lika bra indikation på att det inte är ett godkänt ID (personligen hade jag jag hämtat resultatet och kollat mängden i efterhand. För mycket logik i datalagret är inte sunt)

SELECT AltID FROM Tabell t WHERE ID = 1 AND (SELECT COUNT(DISTINCT t2.altID) FROM Tabell t2 WHERE t2.ID=t.ID)>1

eller

SELECT AltID FROM Tabell t WHERE ID = 1 AND ID IN (SELECT ID FROM Tabell t2 GROUP BY ID HAVING COUNT(DISTINCT altID)>1)
Medlem sedan sep. 2005673 inlägg
#3

Toppen! Jag är för insnöad att försöka lösa sådana här problem med if och case-satser tror jag. Tack! :)

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)