webForumDet fria alternativet

Requestproblem

10 svar · 338 visningar · startad av MrMojo

MrMojoMedlem sedan okt. 200461 inlägg
#1

Ok, då var vi här igen. :r

Jag har en kodsnutt som ser ut så här:

SELECT *
FROM Anmalningar
WHERE Kurs = 'MMColParam'
ORDER BY Namn ASC

Hämtar 'MMColParam' med 'Request.QueryString("Kursnr")'

Det funkar bra. Men om jag vill hämta "kursnr" + ordet "reserv". Hur ska det se ut då?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Vad menar du med att hämta ordet reserv? Kan du exemplifiera vilket resultat du vill ha?

Engine^Medlem sedan dec. 20003 887 inlägg
#3
SELECT *
FROM Anmalningar
WHERE Kurs = 'MMColParam' + 'reserv'
ORDER BY Namn

:q

MrMojoMedlem sedan okt. 200461 inlägg
#4

Tjock

Åh, jag är så tjock i huvudet. Tack för hjälpen... :r

MrMojoMedlem sedan okt. 200461 inlägg
#5

En fortsättning...

Här är en liten fortsättning på detta problem.

Jag har denna query som hämtar antal anmälda till kurserna. Det funkar fint.

SELECT kurs.kursnr, kurs.steg, anmalningar.kurs, count (anmalningar.kurs) as antal
FROM kurs left outer join Anmalningar on kurs.kursnr = anmalningar.kurs
group by kurs.kursnr, Anmalningar.kurs, kurs.steg, kurs.kursnr

Om jag gör så här:

SELECT kurs.kursnr, kurs.steg, anmalningar.kurs, count (anmalningar.kurs) as antal
FROM kurs left outer join Anmalningar on kurs.kursnr + 'reserv' = anmalningar.kurs
group by kurs.kursnr, Anmalningar.kurs, kurs.steg, kurs.kursnr

Då funkar det att räkna de som är anmälda som reserver. Men hur gör jag för att kunna räkna ut alla som är anmälda och även räkna alla reserver samtidigt? Jag vill alltså visa resultaten i 2 olika fält. Inte sammanslaget.

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Hmm Hur är din datamodell? Det ser ut som om du för varje kurs har två namn, dvs

tractorpulling
tractorpullingreserv
knyppling
knypplingreserv

vilket verkar konstigt. Om detta är sant skulle jag rekommendera att du gjorde om modellen.

MrMojoMedlem sedan okt. 200461 inlägg
#7

Hur menar du då?

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Ja, stämmer min hypotes om din datamodell?

MrMojoMedlem sedan okt. 200461 inlägg
#9

Ja :r

LarsGMedlem sedan dec. 200012 464 inlägg
#10

För att med nuvarande design få ut antalet anmälningar uppdelat på reserv och icke reserv (om jag har förstått rätt)

SELECT kurs.kursnr, 
  kurs.steg, 
   count (anmalningar.kurs) as antal,
  (select count(*)
    from anmalningar a
   where a.kurs = kurs.kursnr + 'reserv')
FROM kurs 
left outer join Anmalningar on kurs.kursnr = anmalningar.kurs
where kurs.kursnr not like '%reserv' 
group by kurs.kursnr, kurs.steg

Ovanstående fråga är nog inte speciellt effektiv

Rent designmässigt så tycker jag att det vore bättre att ha ett namn på kursen och istället har man en extra kolumn (med värdet 0 eller 1 t.ex.) i anmälningar som anger om man är reserv eller inte.

SELECT kurs.kursnr, 
  kurs.steg, 
sum(case when reserv = 0 then 1 end) as antal,
  sum(reserv) as reserver
FROM kurs 
left outer join Anmalningar on kurs.kursnr = anmalningar.kurs 
group by kurs.kursnr, kurs.steg
MrMojoMedlem sedan okt. 200461 inlägg
#11

Provade din kod ovan. Tyvärr ger den inga resultat på reserverna.

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