24. november 2002 - 17:12Der 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?
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
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 )
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
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?!
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?
.. 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.
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
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:
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.
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 :)
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;
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
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.