webForumDet fria alternativet

Select som alltid returnerar ett värde även i de fall då poster inte finns?

Databaser & SQL

9 svar · 324 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Det jag undrar över är hur man kan göra en select-sats som alltid returnerar ett värde, även i de fall då det inte finns något i tabellen. Någon som vet hur man gör det? (Jag vill inte använda mig av BOF/EOF).

Medlem sedan dec. 200012 464 inlägg
#2

Det låter som ett konstigt krav. Vad är det för fel på eof?

Medlem sedan maj 20011 312 inlägg
#3

Så här ser det ut idag men sql-satsen exekueras två gånger.

SQLstmt = "select ff from fibban..test"

IF NOT DataConn.Execute(SQLstmt).EOF THEN arrRecords = DataConn.Execute(SQLstmt).GetRows()

Så här vill jag att det ska stå. Jag vill inte använda mig av recordsetet.

SQLstmt = "select ff from fibban..test"
arrRecords = DataConn.Execute(SQLstmt).GetRows()
Medlem sedan juni 200032 967 inlägg
#4

Kan du inte göra så här?

SQLstmt = "select ff from fibban..test"

set objRS= DataConn.Execute(SQLstmt)
if not objRS.EOF THEN arrRecords = DataConn.Execute(SQLstmt).GetRows()
Medlem sedan dec. 200012 464 inlägg
#5

Det skapas alltid ett recordset. Att göra en mer komplicerad fråga bara för spara en if här är en suboptimering.

set rs = dataconn.execute(sql)
if not rs.eof then 
arrRecords = DataConn.Execute(SQLstmt).GetRows()
end if
Medlem sedan maj 20011 312 inlägg
#6

Idag så gör jag hämtningar på det sättet, dvs

IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows

Men det känns som man kan optimera bort det där med if-satsen för EOF. Jag vill att det ska stå så här:

SQLstmt = "select-sats som returnerar ett värde alltid"
arrRecords = DataConn.Execute(SQLstmt).GetRows()

Lyckas man med det så kan man slippa det där med if-satsen och recordsetet.

Medlem sedan juni 200032 967 inlägg
#7

Du skulle ju kunna göra en union-select på nullvärden. Men jag förstår inte riktigt syftet...
Något sånt här borde funka:

SQLstmt = "select ff from fibban..test union select null"
arrRecords = DataConn.Execute(SQLstmt).GetRows()

mvh,

Medlem sedan maj 20011 312 inlägg
#8

Jag funderade på det med union också. Det finns inget annat sätt? :)

Medlem sedan maj 20011 312 inlägg
#9

Jag antar ingen vet eller att det inte går att returnera något. Inte ens ett false eller true värde... :) attans ost

Medlem sedan dec. 200012 464 inlägg
#10

Jo, det går men det är fel sätt.

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