Avatar billede Slettet bruger
16. september 2011 - 01:17 Der er 6 kommentarer og
1 løsning

Join problemer

Jeg har problemer med en noget inder join.

Jeg har en tabel (KAMP) i min database med 3 fodbold kampe:

Kamp tabel:

[kampid]-[holdid1]-[holdid2]
1 - 1 - 2
2 - 3 - 4
3 - 5 - 6


Kampene er registeret med med et id og holdenes id'er som henviser til en hold tabel (HOLD) hvor tallet er id'et og ud fra det finder jeg deres holds navn.

Hold Tabel:

[holdid][holdnavn]
1 - FC Gynge
2 - FC Kage
3 - FC Champs
4 - FC Super
5 - FC Okay
6 - FC ØL


Jeg prøver at forbinde de 2 tabeller og lave en kamp liste med deres navne i stedet for id'er.

Jeg forbinder dem sådan:

$result = mysql_query("SELECT holdid1,holdid2,a.holdnavn AS hold1, b.holdnavn AS hold2 FROM KAMP JOIN HOLD a ON holdid1=a.holdid JOIN HOLD b ON holdid2=b.holdid ORDER BY kampid") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$hold1=$row['hold1'];
$hold2=$row['hold2'];

echo "$hold1 vs $hold2<br>";
}


Men når jeg så udskriver mine kampe kommer alt det her:

FC Gynge vs FC Kage
FC Gynge vs FC Kage
FC Champs vs FC Super
FC Champs vs FC Super
FC Champs vs FC Super
FC Champs vs FC Super
FC Okay vs FC ØL
FC Okay vs FC ØL

Istedet for bare en af hver kamp
FC Gynge vs FC Kage
FC Champs vs FC Super
FC Okay vs FC ØL


I min kamp tabel er der kun 3 kampe Så ved ikke hvorfor den udskriver alle de kampe.
Jeg har prøvet at gøre det efter noget hjælp jeg har fået før:
http://www.eksperten.dk/spm/930697
Men kan ikke lige se en fejl og har efterhånden prøvet alt.
16. september 2011 - 06:51 #1
$result = mysql_query("SELECT a.kampid, b.holdnavn hold1, c.holdnavn hold2 FROM KAMP a JOIN HOLD b ON a.holdid1 = b.holdid JOIN HOLD c ON a.holdid2 = c.holdid");
while($row = mysql_fetch_array($result)) echo $row['kampid'] . " vs " . $row['hold1'] . " vs " . $row['hold2'] . "<br>" ;

Der får du også kampid med.  Hvis du ikke vil have det kan du skippe $row['kampid'] . " vs " .
Avatar billede majbom Novice
16. september 2011 - 07:26 #2
prøv at smid en "GROUP BY a.kampid" i din query
Avatar billede Slettet bruger
16. september 2011 - 09:49 #3
Christian --> dit forslag hjalp desværre ikke. Men derfor kan jeg jo nok godt bruge dit svar i fremtiden alligevel. Er det en fordel at lade "hoved"-tabellen, som i dette tilfælde er KAMP, have et reference bogstav. Ligesom du gave den et a.

Splazz --> Det virkede. Forstår bare ikke hvad forskellen på jeg lavede først og det indlæg jeg fik hjælp i tidligere. For det virkede jo fint.

Håber nogen kan forklare det, ellers 1000 tak for hjælpen splazz. Smid et svar. :)
Avatar billede majbom Novice
16. september 2011 - 09:51 #4
Splazz --> Det virkede. Forstår bare ikke hvad forskellen på jeg lavede først og det indlæg jeg fik hjælp i tidligere. For det virkede jo fint.


forstår ikke...

selv tak :)
Avatar billede Slettet bruger
16. september 2011 - 10:17 #5
Altså det jeg mener er at det link jeg henviser til i #1.
Der får jeg hjælp af christian, og hjælpen virker på det tidspunkt. Nu prøver jeg så at bruge det igen. Men nu virker det pludselig ikke.

Så jeg kunne godt tænke mig at vide hvad der går galt.
Avatar billede majbom Novice
16. september 2011 - 12:57 #6
fordi du ikke bruger GROUP BY...

og tak for point
Avatar billede Slettet bruger
16. september 2011 - 13:21 #7
Jamen det gjorder jeg heller ikke førhen. Der brugte jeg Order by, men det virkede ikke denne gang.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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