kostenloser Webspace werbefrei: lima-city


MySQL Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    f************r

    Hi,

    ich habe ein Problem mit MySQL:

    Meine Tabelle spieler sieht so aus:

    --------------------------------------------------------------------
    Vorname1 | Vorname2 | Nachname | Mannschaft |
    --------------------------------------------------------------------

    Das sind alles Zahlen! Meine Tabellen vornamen, nachnamen, vereine sehen so aus:

    ----------------
    ID | name |
    ----------------

    Ich will den
    vornamen.name AS name1 WHERE vorname.ID = spieler.Vorname2
    und den
    vornamen.name AS name2 WHERE vorname.ID = spieler.Vorname2
    hohlen, allerdings schaffe ich dies nicht in einen Query!

    Könnte mir bitte einer helfen!

    Danke schon mal im vorraus!

    MfG

    Steffen
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hmm ich würd mal sagen einfach zusammen joinen ;-)

    SELECT s.id, v1.name, v2.name, n.name, v.name
    FROM spieler s
    JOIN vornamen v1 ON s.vorname1=v1.id
    JOIN vornamen v2 ON s.vorname2=v2.id
    JOIN nachnamen n ON s.nachname=n.id
    JOIN vereine v ON s.mannschaft=v.id


    vllt. noch ein Tipp am Rande:
    Wenn man die Spalten mit den IDs immer gleich benennt, kann man "ON s.nachname=n.id" verkürzen auf "USING(nid)". Also Tabelle Spieler die ID Spalten mit den ID Spalten der anderen Tabellen ;-)
    Beispiel:
    SELECT s.sid, v1.name, v2.name, n.name, v.name
    FROM spieler s
    JOIN vornamen v1 ON s.vid1=v1.vid
    JOIN vornamen v2 ON s.vid2=v2.vid
    JOIN nachnamen n USING(nid)
    JOIN vereine v USING(mid)

    ...wenn die Tabellenspalten wie folgt heißen:
    Spieler(sid, vid1, vid2, nid, mid)
    Vornamen(vid, name)
    Nachnamen(nid, name)
    Vereine(mid, name)

    Grüßle

    Edit: Tipp ergänzt

    Beitrag zuletzt geändert: 2.4.2009 13:23:06 von scout
  4. Autor dieses Themas

    f************r

    Hi,

    danke es Funktioniert!
    Den Tipp werde ich mir für die nächste überarbeitung der Datenbank merken!

    Aber ein Problem habe ich noch: Da nicht alle Spieler einen Zweitnamen haben, ist bei manchen Spielern vorname2 = 0 und diese werden dann nicht angezeigt!

    Weiß einer wie man dieses Problem lösen kann?

    Danke schon mal im vorraus,

    Steffen
  5. ok, ist ein Argument ;-)
    Dann halt so..
    SELECT s.id, v1.name, v2.name, n.name, v.name
    FROM spieler s
    JOIN vornamen v1 ON s.vorname1=v1.id
    LEFT JOIN vornamen v2 ON s.vorname2=v2.id
    JOIN nachnamen n ON s.nachname=n.id
    JOIN vereine v ON s.mannschaft=v.id


    alternativ kannst du natürlich auch bei allen anderen Joins ein Left davor schreiben, falls dort auch mal eine ID nicht vorhanden sein sollte ;-)

    Grüßle

    Beitrag zuletzt geändert: 3.4.2009 11:50:06 von scout
  6. Autor dieses Themas

    f************r

    Hi,

    danke es funktioniert!

    alternativ kannst du natürlich auch bei allen anderen Joins ein Left davor schreiben, falls dort auch mal eine ID nicht vorhanden sein sollte


    Bei den anderen Spalten sollte eine ID vorhanden sein!

    MfG

    Steffen

    ~close~
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!