webForumDet fria alternativet

Enklare SQL-fråga. Inte ens Gud skulle förlåta mig...

Databaser & SQL

23 svar · 1 493 visningar · startad av oskars · sida 2 av 2

Frågan, av oskars

Hej... ja, jag vet... jag kan inte göra ordentliga SQL-frågor. Set oCount1 = Connect.Execute("SELECT COUNT() AS antal1 FROM Users WHERE Projekt = "&RecSet("ID")&" AND sID ='"&Session("userID")&"' AND AK = 0 AND GS = 0 AND KOrder = 0") Set oCount2 = Connect.Execute("SELECT COUNT() AS antal2 FROM Users WHERE Projekt = "&RecSet("ID")&" AND sID ='"&Session("userID")&"' AND AK = 1 AND GS = 0 AN

Läs frågan i sin helhet →
Medlem sedan nov. 20051 317 inlägg
#21

Okej, jag förstår... tror jag...

Jag är så ledsen, jag är så förvirrad. Ska jag göra så som jag skriv i mitt senaste inlägg? "Null as intMinaTelefonanger" osv... i fråga1?

Medlem sedan juni 200032 967 inlägg
#22

Jag är så ledsen, jag är så förvirrad. Ska jag göra så som jag skriv i mitt senaste inlägg? "Null as intMinaTelefonanger" osv... i fråga1?

Alla fältnamn du vill referera till i din asp-kod skall vara i fråga 1. Se mitt inlägg ovan.

Eftersom jag ändå hade ett inlägg färdigskrivet, så är det lika bra jag postar det:

- - - -

oskars skrev:

Hur kan jag få in fältnamnen från fråga2 och fråga3 i fråga1?

Som Ingemar Stenmark brukar säga när det gäller kod: "Hä bar' å skriv!".

SELECT 1 AS FältFrånFörstaFjuket, NULL AS FältFrånAndraFjuket, NULL AS FältFrånTredjeFjuket
UNION
SELECT NULL, 2, NULL
UNION
SELECT NULL, NULL, 3

Resultatet blir då:

FältFrånFörstaFjuket    FältFrånAndraFjuket    FältFrånTredjeFjuket
1                       NULL                   NULL
NULL                    2                      NULL
NULL                    NULL                   3

Så: börja med att hämta ut värdet från FältFrånFörstaFjuket. Gör en movenext i asp-koden. Hämta värdet från FältFrånAndraFjuket, gör en movenext i koden. Sedan hämtar du FältFrånTredjeFjuket och stänger och förstör alla objekt.

Medlem sedan mars 20034 471 inlägg
#23

Du ska namnge dina fyra kolumner i den översta SELECT-satsen med passande namn för alla tre hämtningarna du gör. SQL struntar blankt i vad du kallar kolumnerna, det har inte mer betydelse än vad ASP bryr sig om vad du väljer att kalla en variabel.

Medlem sedan nov. 20051 317 inlägg
#24

Härligt! Tack alla för hjälpen! Nu verkar det som att jag fått det att fungera! Wiho!

Här är koden:

set oCount = Connect.Execute(""& _

	"SELECT " & _
	"SUM(case when KOrder = 1 then 1 else 0 end) as intMinaOrdrar, " & _
	"SUM(case when KOrder = 3 then 1 else 0 end) as intMinaAtgardas, " & _
	
	"Null as intMinaTelefonanger, Null as intMinaReturOK, Null AS intMinaReturer, " & _
	"Null AS intMinaAA, Null as intMinaAA_Arkiv, Null as intMinaTelefonanger_Arkiv, " & _
	"Null as intMinaEjGodkanda " & _
	
	"FROM Adresser2006 WHERE sID = '"&Session("userID")&"' UNION ALL " & _
	
	"SELECT " & _
	"Null, Null, " & _
	"SUM(case when KOrder = 2 then 1 else 0 end) as intMinaTelefonanger, " & _
	"SUM(case when KOrder = 3 then 1 else 0 end) as intMinaReturOK, " & _
	"SUM(case when KOrder = 33 then 1 else 0 end) as intMinaReturer, " & _
	"SUM(case when KOrder = 44 then 1 else 0 end) as intMinaAA, " & _
	"Null, Null, Null " & _
	
	"FROM Arkiv WHERE sID ='"&Session("userID")&"' UNION ALL " & _
	
	"SELECT " & _
	"Null, Null, Null, Null, Null, Null, " & _
	"SUM(case when KOrder = 44 then 1 else 0 end) as intMinaAA_Arkiv, " & _
	"SUM(case when KOrder = 2 then 1 else 0 end) as intMinaTelefonanger_Arkiv, " & _
	"SUM(case when KOrder = 5 then 1 else 0 end) as intMinaEjGodkanda " & _
	
	"FROM ArkivUtanOrdernummer WHERE sID ='"&Session("userID")&"'")

Tal = 0
Do Until oCount.EOF
Tal = Tal + 1

	If Tal = 1 Then
		intMinaOrdrar = oCount("intMinaOrdrar")
		intMinaAtgardas = oCount("intMinaAtgardas")

	ElseIf Tal = 2 Then
		intMinaTelefonanger = CInt(oCount("intMinaTelefonanger"))
		intMinaReturOK = oCount("intMinaReturOK")
		intMinaReturer = oCount("intMinaReturer")
		intMinaAA = oCount("intMinaAA")
	ElseIf Tal = 3 Then
		intMinaAA2 = oCount("intMinaAA_Arkiv")
		intMinaAA = CInt(intMinaAA) + CInt(intMinaAA2)
		intMinaTelefonanger2 = oCount("intMinaTelefonanger_Arkiv")
		intMinaTelefonanger = CInt(intMinaTelefonanger) + CInt(intMinaTelefonanger2)
		intMinaEjGodkanda = oCount("intMinaEjGodkanda")
	End If

oCount.MoveNext
Loop

Tack tack tack!!! :) :i :bire

Nu har jag lärt mig lite samtidigt också! Grymt!

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