Avatar billede rane Nybegynder
11. december 2003 - 20:44 Der er 12 kommentarer og
1 løsning

Group by

Har søgt i tidligere indlæg vedrørende Group by, men fandt ikke noget der kan bruges i min situation.

Jeg har en tabel som ser således ud:

ID | HoldID | RundeNr | KampID | Home_Away
1  | 103    | 1      | 1      | 1
2  | 101    | 1      | 1      | 0
3  | 102    | 1      | 2      | 1
4  | 104    | 1      | 2      | 0

Home_Away:  1 = Hjemmebane 0 = Udebane

dvs. Hold 103 og 101 spiller Kamp 1 hvor hold 103 er på hjemmebane og hold 101 er på udebane. Sådan skal det hele forstås. :)

Nu vil jeg gerne have lavet en "schedule" liste som skal se således ud:

Runde 1
Kamp 1 | Hold 103 vs. Hold 101
Kamp 2 | Hold 102 vs. Hold 104
Kamp 3 | osv.
Kamp 4 | osv.

Runde 2
Kamp 1 | Hold xx vs. Hold xx
Kamp 2 | Hold xx vs. Hold xx
Kamp 3 | osv.
--------

Dvs. en Group BY gruppering taget ud fra 2 tabel rækker ad gangen. Indtil videre har jeg ikke haft held til at finde en brugbar løsning.

Hjælp? :)
Avatar billede eagleeye Praktikant
11. december 2003 - 20:59 #1
Hej du skal nok ikke bruge Group By men dette hvor man JOIN samme tabel sammen i en og laver en Order By, så prøv denne:


SQL = "SELECT tabel.holdID as hold1ID, t2.holdID as,hold2ID tabel.RundeNr, tabel.KampID FROM tabel INNER JOIN tabel AS t2 ON tabel.KampID = t2.KampID WHERE tabel.holdID <> t2.holdID AND tabel.Home_Away=1 ORDER BY tabel.rundnr, tabel.kampID"
Avatar billede eagleeye Praktikant
11. december 2003 - 21:03 #2
Hov der er et , formeget lige efter den anden as og det flyttes efter hold2ID:

SQL = "SELECT tabel.holdID as hold1ID, t2.holdID as hold2ID, tabel.RundeNr, tabel.KampID FROM tabel INNER JOIN tabel AS t2 ON tabel.KampID = t2.KampID WHERE tabel.holdID <> t2.holdID AND tabel.Home_Away=1 ORDER BY tabel.rundnr, tabel.kampID"
Avatar billede rane Nybegynder
11. december 2003 - 21:10 #3
wow...den fattede jeg ikke meget af, men prøvede alligevel at indtaste den.

Før lavede jeg en  do until rs.eof - men den går helt galt nu og lister 24 kampe pr. runde hvor der kun skal være 8 kampe  (der er 16 rækker til de 8 kampe)

:/
Avatar billede eagleeye Praktikant
11. december 2003 - 21:17 #4
Arh ja det var for hurtigt den skal kun tage kampe hvor rundeID er lig hinanden. Prøv dette:

SQL = "SELECT tabel.holdID as hold1ID, t2.holdID as hold2ID, tabel.RundeNr, tabel.KampID FROM tabel INNER JOIN tabel AS t2 ON tabel.KampID = t2.KampID WHERE tabel.holdID <> t2.holdID AND tabel.RundeNr = t2.RundeNr AND tabel.Home_Away=1 ORDER BY tabel.rundnr, tabel.kampID"
Avatar billede eagleeye Praktikant
11. december 2003 - 21:17 #5
men den tager alle runderne med 1, 2 mf.
Avatar billede rane Nybegynder
11. december 2003 - 21:25 #6
Jeps, det virkede straks meget bedre. Nu får jeg dog opstillingen:

Runde 1
1 - 103 vs. 101

Runde 1
2 - 113 vs. 107

Runde 1
3 - 109 vs. 115

Min loop kode:
do until rs.eof
%>   
Runde <%= rs("RundeNr")%><br>
<%= rs("kampID") & " - " & rs("hold1ID") %> vs. <%= rs("hold2ID") %>     <br><br>

<% rs.movenext
loop %>
Avatar billede eagleeye Praktikant
11. december 2003 - 21:30 #7
Ok så prøv at lave lidt om i koden sådan her:


rundNr = ""
do until rs.eof
if rundNr <> rs("RundeNr") then
  if rundNr <> "" then Response.Write "<br>" %>
  Runde <%= rs("RundeNr")%><br>
  <%
  rundNr = rs("RundeNr")
end if %>
Kamp <%= rs("kampID") & " - " & rs("hold1ID") %> vs. <%= rs("hold2ID") %>    <br>

<% rs.movenext
loop %>
Avatar billede eagleeye Praktikant
11. december 2003 - 21:31 #8
Eller skal det ind i en <table> ?
Avatar billede rane Nybegynder
11. december 2003 - 21:33 #9
fornemt :)  ja ind imellem bliver det hele jo lidt snørklet men det tager vi med. takker mange gange :)

hov..fiks lige et svar - det her kunne jeg have siddet med i laaang tid hehe
Avatar billede eagleeye Praktikant
11. december 2003 - 21:37 #10
Ok her et svar ;)
Avatar billede rane Nybegynder
11. december 2003 - 21:50 #11
ja det skal nok ind i en <table> - nu testede jeg det kun lige med alm. tekst
Avatar billede eagleeye Praktikant
11. december 2003 - 22:04 #12
Det er sådan set det samme kode bare pakket noget mere omkring :)


rundNr = ""
Response.write "<table>"
do until rs.eof
if rundNr <> rs("RundeNr") then
  if rundNr <> "" then Response.Write "<tr><td colspan=4>&nbsp;</td></tr>"
  Response.Write "<tr><td colspan=4>"  %>
  Runde <%= rs("RundeNr")%></td></tr>
  <%
  rundNr = rs("RundeNr")
end if %>
<tr>
<td>Kamp <%= rs("kampID") %> </td>
<td><%= rs("hold1ID") %> </td>
<td>vs.</td>
<td> <%= rs("hold2ID") %></td>
</tr>
<% rs.movenext
loop
Response.write "</table>"
%>
Avatar billede rane Nybegynder
11. december 2003 - 22:13 #13
tanks :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester