Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL: Verknüpfung zweier Tabellen (Heimteamname und Auswärtsteam aus Teamtabelle)

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL: Verknüpfung zweier Tabellen (Heimteamname und Auswärtsteam aus Teamtabelle)

    Hallo zusammen,

    Leider kann ich auf dieses Thema nicht mehr antworten: http://www.php.de/php-tipps-2005/225...len-php-4.html

    Es handelt sich um ein identisches Problem bei mir, leider versuche ich diese kleine Baustelle seit einiger Zeit zu lösen.

    Ein Auszug, welcher ausreichen sollte aus meiner DB Struktur:

    Tabelle mylive_club
    Felder: id, name

    Tabelle mylive_matches
    Felder: id, homeid, awayid

    Was will ich erreichen?
    Ich möchte alle Einträge aus der Tabelle matches angezeigt bekommen, wobei der Name des Heimteams - Name des Auswärtsteams angezeigt werden sollen.

    Hier einer meiner Versuche:
    PHP-Code:
    $abfrage 
        SELECT 
            'SELECT (c.name FROM mylive_matches as m, mylive_club as c WHERE m.homeid=c.id) as home', 
            'SELECT (c.name FROM mylive_matches as m, mylive_club as c WHERE m.awayid=c.id) as away',
        FROM 
            mylive_matches as m
        "


    $ergebnis mysql_query($abfrage) or die(mysql_error()); 
    while(
    $row mysql_fetch_object($ergebnis)) 
          { 
    echo  

    <table>
    <tr> 
    <td> 
    "
    .$row->home."
    </td> 
    <td> 

    </td> 
    <td> 
    "
    .$row->away.
    </td>
    </tr> 
    "

         } 
    ?> 
    </table> 
    Dabei kommt ein Fehler:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM mylive_matches as m,' at line 5
    Code:
    FROM 
    		mylive_matches as m
    Was ich mir aber kaum vorstellen kann.

    Mein Versuch LEFT JOIN zu benutzen scheiterte ebenfalls.

    Hat einer von euch eine Idee?

    vielen Dank

    cheers
    Erik

  • #2
    Dabei kommt ein komischer Fehler
    Ich hoffe das ist ein Witz !?
    Dürfen wir diese komische Fehlermeldung BITTE auch sehen -.-
    Zudem ist dein vorhaben für mich unverständlich.
    Der Satzbau ist irgendwie merkwürdig.

    cu
    Grüße
    Destruction
    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

    Kommentar


    • #3
      Zitat von Destruction Beitrag anzeigen
      Ich hoffe das ist ein Witz !?
      Dürfen wir diese komische Fehlermeldung BITTE auch sehen -.-
      Zudem ist dein vorhaben für mich unverständlich.
      Der Satzbau ist irgendwie merkwürdig.

      cu
      Grüße
      Destruction
      Es tut mir Leid, habe ihn oben reineditiert

      Kommentar


      • #4
        PHP-Code:
        $abfrage "SELECT 
                'SELECT (c.name FROM mylive_matches as m, mylive_club as c WHERE m.homeid=c.id) as home', 
                'SELECT (c.name FROM mylive_matches as m, mylive_club as c WHERE m.awayid=c.id) as away',
            FROM 
                mylive_matches as m
            " 
        Ich verstehe immer noch nicht ganz was du damit erreichen willst.

        ich glaube aber dass Left JOIN die richtige Richtung ist :

        Zeig doch mal deinen LEFT JOIN - Versuch, vielleicht wird mir / uns dann klarer was du erreichen willst.

        Grüße
        Destruction
        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

        Kommentar


        • #5
          Am Ende sollen meine Fussballlive Spiele in dieser Tabelle erfasst werden, u.a. eben welches Team gegen wen gespielt hat.

          In der Tabelle club werden alle Vereinsnamen und eine Vereinsid gespeichert, da die Vereine ja öfters benötigt werden.

          Die Tabelle matches speichert deswegen nur eine Heimteamid und eine Auswärtsteamid.

          Die Heimteamid aus der Tabelle matches soll dementsprechend mit der Teamid aus der Tabelle club verknüpft werden, um dann den Teamnamen aus der Tabelle club auszugeben.

          Analog dazu Auswärtsteamid.

          Ich habe den Code nicht gespeichert weil es nicht ging, ich versuche ihn gleich wiederherzustellen.

          Grüße
          Erik

          Kommentar


          • #6
            Mein LEFT JOIN Versuch, aber ich weiss nicht wie ich jetzt bei der Ausgabe einmal den Heimteamnamen und einmal den Auswärtsteamnamen ansprechen soll, weil es gibt doch nur die c.name in der SELECT?

            PHP-Code:
            $abfrage 
                SELECT 
                    c.name as teamname,
                FROM 
                    mylive_club as c 
                LEFT JOIN
                    mylive_matches as m
                ON 
                    m.homeid=c.id 
                    
                    AND 
                    
                    m.awayid=c.id
                "

            Fehlermeldung erscheint:
            You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM mylive_club as c LEFT JOIN mylive_matches as m ON m.homeid=' at line 3

            Kommentar


            • #7
              Lernt einfach, MySQL-Fehlermeldungen richtig zu lesen. Der Fehler ist links von dem genannten Ausschnitt. Und, was steht da? Gehört es dahin? ... siehst du
              [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
              [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

              Kommentar


              • #8
                Sowas findet man eigentlich recht schnell raus, indem man sich die fertige SQL-Anweisung einmal mit echo ausgibt:
                Code:
                SELECT c.name as teamname, FROM mylive_club as c LEFT JOIN mylive_matches as m ON m.homeid=c.id AND m.awayid=c.id
                Wenn der Fehler besagt:
                Code:
                You have an error in your SQL syntax; ... for the right syntax to use near 'FROM mylive_matches as m,' at line 5
                könnte man nach Übersetzung des Schlüsselwortes (rot markiert) auf die Idee kommen auch ein bis zwei Zeichen nach links zu schauen.
                Und Zack: Da ist der Fehler, wie fab bereits erwähnt hat!
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Code:
                  SELECT `ms`.*, [das was du aus den anderen Tabellen haben willst] 
                  FROM `mylive_matches` `ms`
                  INNER JOIN `mylive_club` `mc1` ON `mc1`.`id`=`m`.`homeid`
                  INNER JOIN `mylive_club` `mc2` ON `mc2`.`id`=`m`.`awayid`
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar


                  • #10
                    1. Was hat das mit dem eigentlichen Fehler zu tun?
                    2. Stern-Parameter sollte man nicht verwenden!
                    3. Kann man AS weglassen? Wußte ich bis jetzt nicht...
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      1. Weil sein SQL einfach falsch war
                      2. Weil ich keine Ahnung habe, was für felder da sind
                      3. Ja.
                      "My software never has bugs, it just develops random features."
                      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                      Kommentar


                      • #13
                        Vielen Dank für die vielen Vorschläge!

                        @ fab, Arne
                        Danke für den Hinweis, erscheint auch logisch

                        @ Paul
                        mit ein paar Anpassungen funktioniert dein Inner Join Vorschlag super!

                        Hier der funktionierende Code

                        PHP-Code:
                        <p>
                                       Übersicht aller Live Spiele
                                    </p>
                        <?php

                        $abfrage 

                            SELECT m.kickoff as date,c1.name as home,c2.name as away
                            FROM mylive_matches as m
                            INNER JOIN mylive_club as c1 ON c1.id=m.homeid
                            INNER JOIN mylive_club as c2 ON c2.id=m.awayid
                            "



                        $ergebnis mysql_query($abfrage) or die(mysql_error());; 
                        while(
                        $row mysql_fetch_object($ergebnis)) 
                              { 
                        echo  

                        <table>
                        <tr>
                        <td>
                        "
                        .$row->date."
                        </td> 
                        <td> 
                        "
                        .$row->home."
                        </td> 
                        <td> 

                        </td> 
                        <td> 
                        "
                        .$row->away.
                        </td>
                        </tr> 
                        "

                             } 

                        ?> 
                        </table>

                        Ausgabe:
                        Übersicht aller Live Spiele
                        2009-06-20 15:00:00 FC United of Manchester - Chelsea
                        2008-06-07 05:07:00 Manchester United - Tottenham Hotspur
                        1995-06-09 16:03:00 Chelsea - Tottenham Hotspur
                        @xm22

                        Die Lösung aus dem anderen Forum (die Variante mit der Subquery funktioniert noch nicht)

                        PHP-Code:
                        SELECT 
                                m
                        .kickoff as date,
                                
                        'SELECT (c1.name FROM mylive_matches as m, mylive_club as c1 WHERE c1.id=m.homeid) as home'
                                
                        'SELECT (c2.name FROM mylive_matches as m, mylive_club as c2 WHERE c2.id=m.awayid) as away'
                            
                        FROM 
                                mylive_matches 
                        as 
                        Es wäre für das weitere Verständnis für mich auch gut, wenn die Variante auch noch funktionieren würde.

                        Kommentar


                        • #14
                          Zitat von erikjo Beitrag anzeigen
                          Es wäre für das weitere Verständnis für mich auch gut, wenn die Variante auch noch funktionieren würde.
                          Dann nutze die Debug-Möglichkeiten, auf die du bereits hingewiesen wurdest, und finde heraus, wo der Fehler liegt.
                          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                          Kommentar


                          • #15
                            Bitte beachten: Anmerkungen zu Crosspostings

                            [MOD: Thread geschlossen]
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar

                            Lädt...
                            X