Ankündigung

Einklappen
Keine Ankündigung bisher.

tabellenverknüpfung mit 4 tabellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • tabellenverknüpfung mit 4 tabellen

    hallo!
    mir is grad langweilig, und deshalb progg ich mir ein clan cms, obwohl ich winklich nix mit clans zu tun hab .
    naja egal, jetzt zum problem:
    ich mach ne abfrage für die clanwars:
    Code:
    SELECT
    	a.id,
    	a.points,
    	a.opppoints,
    	a.comment,
    	a.xonx,
    	a.date,
    	b.name opp,
    	b.short opp_short,
    	b.url opp_url,
    	b.leader opp_leader,
    	b.leader_mail opp_leader_mail,
    	c.name ladder, c.url ladder_url,
    	c.comment ladder_comment,
    	d.name `mode`
    FROM clanwars a
    JOIN clans b ON a.oppid = b.id
    JOIN ladders c ON a.ladderid = c.id
    JOIN modes d ON a.modeid = d.id
    die geht natürlich nicht so wie sie soll, es werden unendlich viele datensätze gefunden!
    kurze erklärung des queries:
    also in die tabelle clanwars sieht so aus:
    id | oppid | points | opppoints | comment | ladderid | modeid | xonx | date
    oppid soll mit der tabelle `clans` verknüpft werden um an den namen des gegners zu kommen.
    ladderid soll mit der tabelle `ladders` verknüpft werden um an den namen der ladder zu kommen.
    modeid soll mit der tabelle `modes` verknüpft werden um an den namen des modus zu kommen.
    wie gesagt es werden viel zu viele datensätze gefunden und ich weis nicht wie ich das ändern kann; hab schon lang nix mehr mit mysql gemacht und früher hab ich tabellen immer nur mit WHERE verknüpft, aber JOIN soll ja schneller sein?!
    ich denke mal das jede spalte mit jeder anderen spalte verknüpft wird, also müssten es 15^15 datensätze sein!
    muss ich vllt LEFT JOIN oder so machen? was ist da einklich der unterschied?
    danke für hilfe!

    eagleScripts.de


  • #2
    Mit dem alleinstehenden JOIN programmierst du - wie du schon vermutet hast - einen Cross-Join, d.h. du erhälst soviele Datensätze wie in tabelle1 x tabelle2 x tabelle3 x ... enthalten sind. Wenn du nur die Datensätze haben willst, die eine Entsprechung in den andern Tabellen haben, brauchst du eien INNER JOIN, wenn du auch die andern haben willst, einen LEFT JOIN. Siehe auch http://dev.mysql.com/doc/refman/4.0/de/join.html
    Gruss
    L

    Kommentar

    Lädt...
    X