webForumDet fria alternativet

en krångligare sql-sats

8 svar · 201 visningar · startad av eriks

eriksMedlem sedan apr. 20011 418 inlägg
#1

Hej! Kan man på något sätt kolla i SQL om det finns någon (några/) post som uppfyller ens krav. Om man har en tabell med värdena : 1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,4,4,4,4,4,4,4,4,4,6,6 , så vill jag bara få ut 1,2,3,4,6. Dvs jag behöver inte alla värdena (hur många av varje sort det finns är ointressant) utan bara vilka värden som finns. Går detta?

Tack! /Erik

PatrikBMedlem sedan mars 20002 836 inlägg
#2

Jo,

du kan använda dig av:

strSQL = "SELECT DISTINCT FLD_FIELD FROM TBL_TABLE"

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

eriksMedlem sedan apr. 20011 418 inlägg
#3

okey, tack... vad betyder det då

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det innebär att man bara får en förekomst av varje post i resultatet.

Om tabellen ogrish innehåller följande rader

C1!C2
-----
11!22
11!21
12!22

så innebär select distinct c1 from ogrish att man får tillbaka två rader med värdet 11 och 12. Däremot om skriver

select distinct c1,c2 from ogrish

så får man tre rader då distinct aplliceras på alla kolumner i resultatet.

------------------
essentitia preter non sans multiplicandum

eriksMedlem sedan apr. 20011 418 inlägg
#5

nå förstår jag... tack så mycket!

eriksMedlem sedan apr. 20011 418 inlägg
#6

Jag testade lite, men det gick inte så bra. Jag skriver:

SQLStmt3 = "SELECT DISTINCT UserID FROM Users"
Set RS3 = Connection.Execute(SQLStmt3)

Response.Write RS3("UserID")

(Detta är bara test, annars är det ju självklart att det inte finns två likadan UserID). När jag skriver så får jag bara fram den första posten. Jag vill få fram alla poster. Vad är fel?

CGMedlem sedan maj 20015 inlägg
#7

SQLStmt3 = "SELECT DISTINCT UserID FROM Users"
Set RS3 = Connection.Execute(SQLStmt3)

Do While Not RS3.EOF
Response.Write RS3("UserID") & "<br>"
RS3.MoveNext
Loop

LarsGMedlem sedan dec. 200012 464 inlägg
#8

SQLStmt3 = "SELECT DISTINCT UserID FROM Users"
Set RS3 = Connection.Execute(SQLStmt3)

while not rs3.eof
Response.Write RS3("UserID") & "<br>"
rs3.movenext
wend

ungefär så kan man skriva för att få fram alla poster.

------------------
essentitia preter non sans multiplicandum

eriksMedlem sedan apr. 20011 418 inlägg
#9

tack... om jag vidareutvecklare det lite mer. Det jag har tänkt göra är att kolla om ett speciellt värde finns i tabellen. Jag ska göra det på flera ställen på sidan. Jag kan ju använda en loop, så som ni visade, men borde det inte finnas lättare sätt att göra detta. Jag menar typ genom att hämta alla värden från tabellen en gång (så med SELECT DISTINCT) och ha dem i en kommabaserad lista, och sedan bara kolla vid varje ställe man ska använda sig av det behöver man bara kolla om talet man är ute efter ligger i listan. Går detta och borde det inte vara bättre än att ha en massa loopar?

Tack! /Erik

131 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)