webForumDet fria alternativet

Nybörjare på Inner Join :/

2 svar · 334 visningar · startad av Krug

KrugMedlem sedan maj 200197 inlägg
#1

jag har aldrig använt Inner Join innan och har just fått sagt till mig att det är vad ja ska använda för att få resultatet jag vill.
Kan även tänka mej att det går att lägga allt i en array och sortera sen vilket jag heller aldrig har pysslat med.
, så jag uppskattar all hjälp ja kan få :)

Jag har 2 tebeller som ser ut såhär:

korplag
------------------
LagID -räknare
Lag -text
Division -text
Spelare1 -text
Spelare2 -text
Reserv -text
--------------------
Korpresultat
---------------------
Lag1 -text
Lag2 -text
ResLag1 -tal
ResLag2 -tal
Datum -datum/tid
Division -tal
-------------------

Jag har knapprat ihop en massa kod som gör det ja vill men sorterar det inte. Den ser ut såhär :)

<%
SQL = "Select * From korplag where division = '"& request("division") &"'"
set rs = ConnObj.Execute(SQL)
do until rs.eof

	SQL2 = "Select * From korpresultat where lag1 = '"& rs("lag") & "' OR lag2 = '"& rs("lag") & "'"
	set rs2 = ConnObj.Execute(SQL2)
	
	if rs2("lag1") = rs("lag") then
	laget = rs2("reslag1")
	laget2 = rs2("reslag2")
	else
	laget = rs2("reslag2")
	laget2 = rs2("reslag1")
	end if
	
	antal =0
	diff =0
	poang =0	
	do until rs2.eof
		select case laget
		case "0"
		diff = diff-12
		case "1"
		diff = diff-10
		case "2"
		diff = diff-8
		case "3"
		diff = diff-6
		case "4"
		diff = diff-4
		case "5"
		diff = diff-2
		case "6"
		diff = diff
		case "7"
		diff = diff+2
		case "8"
		diff = diff+4
		case "9"
		diff = diff+6
		case "10"
		diff = diff+8
		case "11"
		diff = diff+10
		case "12"
		diff = diff+12
		end select
		
		antal = antal+1
		
		if laget > laget2 then
		poang = poang+2
		elseif laget < laget2 then
		poang = poang
		else
		poang = poang+1
		end if
		
	rs2.MoveNext
	Loop
	
response.write rs("lag") & " - " & antal & " - " & diff & " - " & poang & "<br>"
rs.MoveNext
Loop
ConnObj.Close
%>

Möjligtvis är det en mycket korkad kod.. men det är för att ja inte vet bättre :)
Nu skriver den iaf ut rätt antal spelade matcher, diff och poäng vid respektive lag.. nu skall den bara sorteras så det lag med högst poäng ligger överst (givetvis). /r och sedan den med högst diff
Jag använder mej av en Access 2000 databas kanske jag ska säga oxå.

Tack på förhand KruGer

LR^evil.sidMedlem sedan maj 2002560 inlägg
#2

du kan ju försöka med:

[red]SQL2 = "Select * From korpresultat where lag1 = '"& rs("lag") & "' OR lag2 = '"& rs("lag") & "' Order By [blue]poängfält[/blue] Desc"[/red]

och lägga till:

[red]rs.Close
ConnObj.Close
set rs = Nothing
set ConnObj = Nothing[/red]
tohaMedlem sedan dec. 1999707 inlägg
#3

Det kanske underlättar om du skapar följande fråga som du sedan gör ytterligare frågor på:

SELECT
    Korplag.Lag,
    Korpresultat.Datum,
    Korpresultat.ResLag1 AS TeamScore,
    Korpresultat.ResLag2 AS OpponentScore,
    TeamScore - OpponentScore AS DiffScore,
    iif(DiffScore > 0, 2, iif(DiffScore < 0, -2, 0)) AS Poäng
FROM
    Korplag INNER JOIN Korpresultat ON Korplag.Lag = Korpresultat.Lag1

UNION ALL SELECT
    Korplag.Lag,
    Korpresultat.Datum,
    Korpresultat.ResLag2 AS TeamScore,
    Korpresultat.ResLag1 AS OpponentScore,
    TeamScore - OpponentScore AS DiffScore,
    iif(DiffScore > 0, 2, iif(DiffScore < 0, -2, 0)) AS Poäng
FROM
    Korplag INNER JOIN Korpresultat ON Korplag.Lag = Korpresultat.Lag2
ORDER BY Lag, Datum DESC;

Med den får du ut:

Lag	Datum	TeamScore	OpponentScore	DiffScore	Poäng
AAA	2002-08-16	1	1	0	0
AAA	2002-06-07	1	3	-2	-2
AAA	2002-05-05	2	2	0	0
BBB	2002-08-16	1	1	0	0
BBB	2002-06-07	3	1	2	2
BBB	2002-05-05	2	2	0	0

Där AAA och BBB är lagnamnen. Är lite seg i kolan för tillfället men jag återkommer. Hoppas det hjälper dig något så länge...

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