Avatar billede dgim Nybegynder
24. november 2002 - 17:12 Der er 33 kommentarer og
1 løsning

join i SQL

jeg har en tabel med nogle hold og en tabel med kampe.
I kamp tabellen er der feks IDHold1 og IDHold2 jeg skal så have lavet en SQL sætning som henter info om begge hold. Hovdan gøres det smartest?
Avatar billede loss Nybegynder
24. november 2002 - 17:15 #1
Avatar billede dgim Nybegynder
24. november 2002 - 17:19 #2
det jeg skal bruge er noget i den her retning:
SELECT * FROM Kampe INNER JOIN Hold on Hold.ID = Kampe.IDHold1 INNER JOIN Hold on Hold.ID = Kampe.IDHold2
Avatar billede _just4fun_ Nybegynder
24. november 2002 - 17:28 #3
Du kan da godt joine det, men er det ikke federe at hente dem ud som 2 hold?
select * from Hold where Id in(select IDHold1 , IDHold2 from Kampe where kampe.KampId = minKampId )
Avatar billede hossein Nybegynder
24. november 2002 - 17:31 #4
hvis det er 2 tabeller, så må den ene tabel indeholder den anden ID:

select *.hold, *.kamp from hold, kampe where hold.ID = kampe.HoldID
Avatar billede _just4fun_ Nybegynder
24. november 2002 - 17:31 #5
anyway, ellers er det som
SELECT h1.*, h2.* FROM Kampe
  INNER JOIN Hold h1
  on H1.ID = Kampe.IDHold1
    INNER JOIN Hold h2
    on H2.ID = Kampe.IDHold2
where Kampe.KampId = minKampId
Avatar billede dgim Nybegynder
24. november 2002 - 17:42 #6
hmm jeg kan ikke rigtig få det til at virke Just4fun... http://ub.lir.dk/2on2/kampe.asp
Avatar billede hossein Nybegynder
24. november 2002 - 17:58 #7
Kan du sende felter i begge tabeller? og hvordan du inserter data i tabeler? det kan være et hold (unik) og et hold kan have et eller flere kampe?!
Avatar billede dgim Nybegynder
24. november 2002 - 18:06 #8
jeg er ikke helt med på hvad du mener...

Hold tabellen indeholder:
ID, ClanNavn, Tag, Members og Gruppe

Kamp tabellen indeholder:
ID, IDHold1, IDHold2 og Runde

Det kan også være det kunne være lavet på en anden måde...?
Avatar billede hossein Nybegynder
24. november 2002 - 18:17 #9
Kamp.IDHold1 indeholder samme værdi i Hold.ID:
select *.hold, *.kamp from hold, kampe where hold.ID = kampe.IDHold1
Avatar billede dgim Nybegynder
24. november 2002 - 18:19 #10
hmm det vil den ik rigtig være med til :/

http://ub.lir.dk/2on2/kampe.asp
Avatar billede hossein Nybegynder
24. november 2002 - 18:24 #11
Det er omvendt hold.*, sorry:
select hold.*, kamp.* from hold, kampe where hold.ID = kampe.IDHold1
Avatar billede dgim Nybegynder
24. november 2002 - 18:25 #12
det hjelp ik ret meget... gg
Avatar billede hossein Nybegynder
24. november 2002 - 18:28 #13
:))) fordi det hedder Kampe:
select hold.*, kampe.* from hold, kampe where hold.ID = kampe.IDHold1
Avatar billede hossein Nybegynder
24. november 2002 - 18:35 #14
Det ser ud som om det virker!!!
Avatar billede dgim Nybegynder
24. november 2002 - 18:39 #15
ja men jeg får jo kun fat på det ene hold... altså IDHold1, hvad gør jeg mht nr2 så ?

jeg skulle gerne have det til at stå på den her måde:

"navn på hold1" vs "navn på hold2"
Avatar billede hossein Nybegynder
24. november 2002 - 18:44 #16
For at vise indeholdet af IDHold2, eller læg koden hvor du viser resultatet:
.... =rs("IDhold2")
Avatar billede dgim Nybegynder
24. november 2002 - 19:01 #17
ja men hvis du ser på siden nu kan du se at jeg godt kan få fat på clan navnet på hold1 men hvad gør jeg hvis jeg skal have det for hold2 i stedet for bare og have id stående?
Avatar billede _just4fun_ Nybegynder
24. november 2002 - 19:48 #18
.. Som jeg ser det på siden du henviser til vil du gerne have en liste af Kamp.*, Hold1Navn, Hold2Navn.
Det får du (sårn næsten) ved den dobbelte inner-join query jeg nævnte før (ikke den der ikke virkede;-)... Men her kommer den igen, omskrevet til at passe det jeg tror der skal være :

SELECT Kampe.*, h1.Navn as Hold1Navn, h2.Navn as Hold2Navn FROM Kampe
  INNER JOIN Hold h1
  on H1.ID = Kampe.IDHold1
    INNER JOIN Hold h2
    on H2.ID = Kampe.IDHold2

Så har du både kampinfo og navne i den samme record.
Avatar billede hossein Nybegynder
24. november 2002 - 20:05 #19
Du har for den 3. tabel.
tblKampe: tag, members, gruppe, Hold1ID, Hold2ID
tblHold1: ID, ClanNavn1, Runde1
tblHold2: ID, ClanNavn2, Runde2

også join:
Select tblKampe.*, tblHold1.*, tblHold2.* from tblKampe, tblHold1, tblHold2
where tblKampe.Hold1ID = tblHold1.ID
AND tblKampe.Hold2ID = tblHold2.ID
Avatar billede hossein Nybegynder
24. november 2002 - 20:08 #20
Du har for den 3. tabel. = Du har brug for den 3. tabel.

Just4fun >> Har du prøvet den join du har lavet? Det er ikke en tabel som hedder h1 eller h2?
Avatar billede _just4fun_ Nybegynder
24. november 2002 - 20:25 #21
'INNER JOIN Hold h1' -> tabellen Hold bliver navngivet h1.. det samme med h2
Avatar billede _just4fun_ Nybegynder
24. november 2002 - 20:26 #22
kunne også have skrevet 'INNER JOIN Hold AS h1'
Avatar billede hossein Nybegynder
24. november 2002 - 21:17 #23
Anden løsning er al lave en Forspørgsel i MSAccess også kalde det i stedet for tabelen. jeg gjorde sådan at i design view for Forspørgsel tilføjede 1 gang tabelen Kampe og 2 gange tabelen Hold, på den måde får man en kopi af det også kan man joine dem, selve forspørgselen er:

SELECT hold.id, hold.idhold1, hold.idhold2, hold.runde, kampe.id, kampe.clavnnavn, kampe.tags, hold_1.id, hold_1.idhold1, hold_1.idhold2, hold_1.runde, kampe.members, kampe.gruppe
FROM hold INNER JOIN (hold AS hold_1 INNER JOIN kampe ON hold_1.idhold2 = kampe.id) ON hold.idhold1 = kampe.id;

her er et eksampel på at hvordan man kan kalde en forspørgsel:

conn = fnCreateConnection
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
Cmd.CommandText = "minForspørgselNavn"
cmd.CommandType = adCmdStoredProc   
cmd.Paramaters("@clannavn") = Request("clannavn")
cmd.Parameters("@XXX") = Request("XXX")
rs.Open cmd,,3,3
Avatar billede dgim Nybegynder
24. november 2002 - 22:03 #24
tak for hjælpen gutter... jeg vælger at give point til hossein da det sådan set er dig der har hjulpet mest ;)

hmm det kunne være at man skulle til at studere SQL lidt nærmere, sys let at det kan blive kompliseret... hehe

-------------
-dgim (Det Giver Ingen Mening) over and out! :D
Avatar billede hossein Nybegynder
24. november 2002 - 22:06 #25
takker, virker det?
Avatar billede dgim Nybegynder
24. november 2002 - 22:08 #26
har ik haft tid til at teste det endnu... men det lyder som om det kommer til det :P
det SKAL virke, ellers kommer jeg ikke i seng i nat... hehe
Avatar billede hossein Nybegynder
24. november 2002 - 22:11 #27
God fornøjelse, Jeg skal lukke nu, men du kan sende besked så skal jeg nok hjælpe hvis jeg kan. Men er sikker på at den løsning virker. Nice site u have.
Avatar billede dgim Nybegynder
24. november 2002 - 22:16 #28
hehe tak tak... der er efterhånden også brugt en del tid på den... men de fleste funktioner vi har på siden kan kun bruges af klanens medlemmer, så som afstemninger, intern mail og messageboard :D
Vi har tænkt på at udvide siden med en underholdnings sektion, men vi ser hvad der sker...

Så kan vi få gang i vores 2on2 turnering...

-------------
#Umfufu-Buela den mest underlige clan i DK :)
Avatar billede hossein Nybegynder
24. november 2002 - 23:23 #29
ups, det er tabelen Kampe som skal kopieres, dermed din forspørgsel bliver:
SELECT kampe_1.id, kampe_1.clavnnavn, kampe_1.tags, kampe_1.members, kampe.id, kampe.clavnnavn, kampe.tags, kampe.members, kampe.gruppe, hold.id, hold.idhold1, hold.idhold2, hold.runde
FROM (hold INNER JOIN kampe ON hold.idhold1 = kampe.id) INNER JOIN kampe AS kampe_1 ON hold.idhold2 = kampe_1.id;

Så får du navnene på begge modstander frem!
Avatar billede dgim Nybegynder
24. november 2002 - 23:47 #30
mht svaret: 24/11-2002 21:17:31
Hvordan siger du at du gør det? det kan jeg ikke hel få til at virke...
Avatar billede _just4fun_ Nybegynder
25. november 2002 - 00:14 #31
hossein >> Der er En kamp med 2 hold, altså skal kampen ikke duplikeres mens holdene skal...
Avatar billede dgim Nybegynder
25. november 2002 - 00:19 #32
jeg har fået løst problemet: http://ub.lir.dk/2on2/kampe.asp?gruppe=1

:D
Avatar billede hossein Nybegynder
25. november 2002 - 00:56 #33
Avatar billede dgim Nybegynder
25. november 2002 - 01:00 #34
sry... jeg har rettet lidt siden.. sååå: http://ub.lir.dk/2on2/kampe.asp?runde=1&gruppe=1

Jeg har lige fundet ud af at den HAT! der har lavet kamp tabellen har lavet et par kiks da han skrev den ind!!! jeg troede det var mig der havde kodet det forkert, men det var det så ikke :P

se feks: http://ub.lir.dk/2on2/kampe.asp?runde=1&gruppe=3
der er der flere hold der kommet til at spille samtidigt... så jeg har en hvis person jeg lige skal snakke med *gg*
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