webForumDet fria alternativet

Hämta id från en tabell och loopa från en annan.

Databaser & SQL

2 svar · 1 660 visningar · startad av Inferis

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

MySQL och Classic ASP (IIS7)

Jag har nog tagit mig vatten över huvudet nu och hoppas att någon kan hjälpa mig lite.

Jag vill hämta en lista med namn och efter deras ID vill jag loopa ut alla poster som är kopplade med kundID

Kunderna listas, men bara 1 post visas från tabellen tjänster. Där vill jag loopa ut alla.

Poster från tabellen tjänster är inlagda med datum i perioder.
Om startdatum är nyare än denna månad så ska det stå Inte börjat än
Om slutdatum är äldre än denna månad ska det stå avslutad
Om slutdatum är i mitten på nuvarande månad så vill jag räkna ut hur många timmar det blivit just nuvarande månad.

SQL = "SELECT n_kunder.*,n_tjanster.* FROM n_kunder LEFT JOIN n_tjanster ON n_kunder.ID = n_tjanster.KundID WHERE n_tjanster.Insats > 0 GROUP BY n_kunder.ID"

...

if slut > nuvarandemanad then
timmar * 30 / antaldagar
End if

Har bifogat en bild som jag hoppas kan förklara lite.

Untitled-1.gif
Medlem sedan sep. 2000667 inlägg
#2

Så här fungerar det idag, men är säker på att det är ett förkastligt sätt att göra det på.

SQL = "SELECT * FROM n_kunder WHERE Avslutade = '2025-01-01' ORDER BY ID ASC"
Set RS = Connection.Execute(SQL)

If Rs.BOF OR Rs.EOF Then
response.write "Här var det tomt!"
else

response.write "<p>"& RS("Namn") &":<br>"

Do until Rs.Eof

	SQL2 = "SELECT * FROM n_tjanster WHERE KundID = "& Rs("ID") &" ORDER BY Tjanst, Start"

	Set RS2 = Connection.Execute(SQL2)

	If Rs2.BOF OR Rs2.EOF Then
	response.write "Här var det tomt!"
	else

	Do until Rs2.Eof

	if Rs2("Typ") = 0 Then
	response.write "Info saknas"
	elseif Rs2("Typ") = 1 Then
	response.write "A"
	elseif Rs2("Typ") = 2 Then
	response.write "B"
	elseif Rs2("Typ") = 3 Then
	response.write "C"
	elseif Rs2("Typ") = 4 Then
	response.write "D"
	elseif Rs2("Typ") = 5 Then
	response.write "E"
	elseif Rs2("Typ") = 6 Then
	response.write "F"
	End if

	response.write " "& RS2("Start") &" - "& RS2("slut") &"<br>"

	RS2.movenext
	loop

	End if 
	Rs2.Close : Set Rs2 = Nothing

response.write "</p><hr>"
RS.movenext
loop

End if 

Rs.Close : Set Rs = Nothing

Fast har ännu inte kommit på hur man räknar ut antal timmar om start/slut sker under aktuell månad.

Medlem sedan maj 2002647 inlägg
#3

Testa att byta ut din GROUP BY n_kunder.ID till en ORDER BY n_tjanster.KundID kanske hjälper?

Jag bara kikade lite snabbt... är långt ifrån en SQL guru som många andra här ;o)

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