Daten aus mehreren Tabellen vereinen.

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

  • Daten aus mehreren Tabellen vereinen.

    Hallo Community,

    Ich schreibe grade ein Skript für eine Online Liga.

    Nun habe ich folgende Tabellen: cup,cup_member & cup_games,user

    In der Tabelle Cup sind folgende Spalten: cup_id, cup_name, date_from, date_to
    Hier werden der Namen und das Datum von wann bis wann das Turnier geht gespeichert.

    cup_member enthält folgende Spalten: cup_id & user_id
    Das soll die Tabelle sein, wo sich die User einschreiben können, hinterher durch die Website.

    cup_id bezieht sich auf tabelle => cup , die user_id bezieht sich auf die tabelle user
    In der Tabelle user werden halt normale Userinformationen gespeichert mit Nickname.

    In cup_games habe ich folgende Spalten: cup_game_id,cup_id,user_i,user_id2,score_home,score_away

    Nun möchte ich wenn ich ein Spiel anlege, das ich bei den user_id, die user_id aus der tabelle user eintragen kann, so das ich hinterher auf der Website mir die Namen ausgeben lassen kann wer gegen wen spielt.

    Das mit der ersten user_id bekomme ich ja hin, aber nicht mit der zweiten.

    Die SQL Abfrage mache ich so:
    Code:
    SELECT cup.cup_name, user.nickname, user2.nickname, cg.score_home, cg.score_away, cg.cup_id
    FROM cup_games AS cg, cup_members AS cm
    INNER JOIN cup ON cg.cup_id = cup.cup_id        
    INNER JOIN user AS user2 ON cg.user_id2 = user2.user_id
    INNER JOIN user ON cg.user_id = user.user_id
    WHERE cup.publish='1'
    AND cg.user_id2 = cm.user_id
    AND cg.user_id = cm.user_id
    Nur jetzt sagt mir phpmyadmin:
    #1054 - Unknown column 'cg.cup_id' in 'on clause'

    Es besteht die Spalte cup_id in der tabelle cup_games

    Hier ist nochmal ein überblick das Datenbank-Daten.

    Beispiel:
    In Datenbank-Tabelle user:

    user_id = 1 ; nickname: Spieler 1
    user_id = 2 ; nickname: Spieler 2

    In Datenbank-Tabelle cup_member:

    cup_id = 1 ; user_id = 1
    cup_id = 1 ; user_id = 2

    In Datenbank-Tabelle cup:

    cup_id = 1 ; cup_name: Erster Cup

    In Datenbank-Tabelle cup_games:

    Cup_game_id = 1
    Cup_id = 1
    user_id = 1
    user_id2 = 2
    score_home = 3
    score_away = 4

    Auf der Website möchte ich jetzt folgendes Darstellen lassen:

    Erster Cup
    Spieler 1 - Spieler 2 3:4

    Das er mir Spieler 1 anzeigt kann ich, nur der bekommt den bezug nicht zu user_id2 und kann mir nicht den Spieler 2 anzeigen.

    Hoffe ich habe es verständlich erklärt

    Auf der Website lasse ich es mir so anzeigen:
    PHP-Code:
    <?php
    echo "Anzahl der Spiele im Cup: " mysql_num_rows($games_count_result);

    if(
    $games['publish']==1){
             echo 
    "<div id=\"title\">";
             
    $unixtime strtotime($games['date_from']);
             
    $unixtime2 strtotime($games['date_to']);
             echo 
    "<div id=\"datum_news\">" date("d.m.y"$unixtime) . "</div>";
             echo 
    "<div id=\"datum_news\">" date("d.m.y"$unixtime2) . "</div>";
             echo 
    "<div id=\"header_news\">" $games['cup_title'] . "</div>";

            while(
    $games=mysql_fetch_array($cup_games_result)){
             echo 
    "<div id=\"inhalt_news\">" $games['nickname'] . "</div>";

             echo 
    "</div>";
            }}
            
        
    mysql_close();   
    ?>
    Ganz schön viel Text, hoffe da blickt noch jemand durch
    Bin um jede Hilfe dankbar.

  • #2
    Crossposting bitte angeben (php.de)

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Alles klar
      Habs verstanden.
      Sry.

      Thema wurde auf PHP.de gesperrt ...
      Hoffe dann hier hilfe zu bekommen.
      Zuletzt geändert von ThunderFrog; 09.03.2011, 10:30. Grund: Multi Post

      Kommentar


      • #4
        Zitat von ThunderFrog Beitrag anzeigen
        Bitte was ?
        Das hilft mir nicht bei meinem Problem.
        Ich habe es extra in mehreren Forums gepostet, weil in jedem Forum auch andere User sind, die mir helfen können.
        Das wird als unhöflich angesehen. In je mehr Foren du schreibst, umso mehr Leute beschäftigen sich parallel mit deinem Problem. Es wird also parallel die selbe Arbeit geleistet und zwar von Leuten in ihrer Freizeit, gratis! Würdest du für diese Arbeit zahlen müssen, würdest du nicht mehrere Firmen parallel beauftragen, oder? Aber wenns nix kostet, kann mans ja machen...

        Kommentar


        • #5
          In unseren Regeln steht eindeutig, dass Crosspostings hier unerwünscht sind. Das ist in anderen Foren übrigens auch so.
          Kannst froh sein, wenn der Thread hier nicht gelöscht wird!

          Die Idee in vielen Foren das selbe zu posten, um so möglichst schnell Hilfe zu bekommen, ist naheliegend. Jedoch profitierst nur du davon. Wir nicht!
          Wir befassen uns mit deinem Anliegen und machen so die selbe Arbeit, die gerade in anderen Foren andere User machen oder schon gemacht haben. Das ist nicht nur uns gegenüber unfair, weil es uns sinnlos Zeit und Mühe kostet, es ist auch unfair gegenüber anderen Usern, für die wir dadurch weniger Zeit haben. Bitte verstehe das und unterlasse zukünftig Crossposting oder mache sie mit Links als solche erkennbar. Danke.

          Kommentar


          • #6
            Zitat von h3ll Beitrag anzeigen
            Das wird als unhöflich angesehen. In je mehr Foren du schreibst, umso mehr Leute beschäftigen sich parallel mit deinem Problem. Es wird also parallel die selbe Arbeit geleistet und zwar von Leuten in ihrer Freizeit, gratis! Würdest du für diese Arbeit zahlen müssen, würdest du nicht mehrere Firmen parallel beauftragen, oder? Aber wenns nix kostet, kann mans ja machen...
            Hi,
            ich hab es verstanden, wuste net das es so böse ist.
            Habe meinen Beitrag ja auch schon editiert.

            Sry nochmal.

            Kommentar


            • #7
              Hallo,

              habe es jetzt hinbekommen das er mir keine Fehler mehr anzeigt, allerdings ist das Ergebniss:

              MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). ( die Abfrage dauerte 0.0689 sek. )

              Die Abfrage sieht jetzt so aus:
              Code:
              SELECT cup.cup_name, user.nickname, user2.nickname, cg.score_home, cg.score_away, cg.cup_id
              FROM  cup_members AS cm, cup_games AS cg
              INNER JOIN cup ON cg.cup_id = cup.cup_id        
              INNER JOIN user AS user2 ON cg.user_id2 = user2.user_id
              INNER JOIN user ON cg.user_id = user.user_id
              WHERE cup.publish='1'
              AND cg.user_id2 = cm.user_id
              AND cg.user_id = cm.user_id
              Ich habe im FROM folgendes geändert:

              ALT:
              FROM cup_games AS cg, cup_members AS cm

              NEU:

              FROM cup_members AS cm, cup_games AS cg

              Warum ist das Ergebniss Leer , obwohl zwei Spiele angelegt wurden ?!

              Kommentar

              Lädt...
              X