datenbanken verknüpfen?

  • Hallo zusammen

    ich habe ein für mich großes Problem. Ich möchte auf einer Seite per Datenbank Spielergebnisse auswerten. Und habe zu diesem zweck eine DB erstellt namens games wo ich pro Spieltag alle Spiele die Stattgefunden haben eingetragen habe. Jedes Spiel hat dabei eine ID bekommen. Dazu habe ich nun noch eine zweite DB erstellt wo alle Mannschaften drin stehen die auch wiederum eine ID bekommen haben. Beide IDs sind mit einem Primärschlüssel versehen.


    Jetzt zu meinem Gedankengang ich dachte wenn ich nun in der games Tabelle ein Ergebnis eintrage das in etwa so ausschaut :


    ID (1. Spiel)

    Spieltag : 1

    Team Home (hier die id der manschaft aus der mannschafts db) :

    Team Away (hier die id der manschaft aus der mannschafts db):

    Tore Heim :

    Tore Auswärts:


    ich dachte nun die ID`s dem jeweiligem Team zu ordnen zu können das dann dort z.b. stehen würde


    Gladbach (heim) gegen Nürnberg(auswärts) 3:1


    bisher steht logischerweise bei db abfrage nur zahlen da . Da ja logischerweise die 1.db nichts von der 2. db weiß .

    Was also tun ? hatte versucht in phpmyadmin beide DB`s zu verknüpfen aber beide IDs zusammen geht offenbar nicht. Habe wohl einen denk Fehler.


    könnt ihr mir helfen ?


    mfg surg

  • Wenn Du wirklich zwei DBs dafür angelegt hast, solltest Du das schon mal ändern, es reichen zwei Tabellen, falls Du das nicht mit DB meinst.

    Die Verknüpfung der beiden Tabellen funktioniert dann am besten über JOIN Varianten.

  • Wenn Du wirklich zwei DBs dafür angelegt hast, solltest Du das schon mal ändern, es reichen zwei Tabellen, falls Du das nicht mit DB meinst.

    Die Verknüpfung der beiden Tabellen funktioniert dann am besten über JOIN Varianten.

    ja sorry meinte 2 tabellen in einer DB und die zu verknüpfen dachte ich muss ich erst in phpmyadmin eine verbindung erzeugen

  • Ne, brauchste nicht. ;) Wie gesagt, schau Dir JOIN an, ist relativ simpel für den Anwendungsfall.

    so ein wenig gelesen in Join anweisungen. wenn ihc das richtig verstehe müsste es dann so ausschauen als code.


    <?php

    require 'edit/db.php';



    $pdo = new PDO('mysql:host=localhost;dbname=fussballseite', 'root', '');


    $sql = "SELECT games.TEAMHOME,

    games.TEAMAWAY,

    teams.ID";

    FROM fussballseite

    INNER JOIN teams ON

    games.TEAMHOME,TEAMAWAY=teams.ID;


    echo="$sql"



    }


    ?>


    aber oh welch wunder das geht natürlich nicht. der fehler liegt angeblich bei "FROM fussballseite . ich dachte an dieser stelle müsste der name der Datenbank liegen. aber offenbar nicht :D.


    möglich das meine abfrage total null sinn ergibt :D ist grade der erste versuch.

  • Du vermischst da was. SELECT spalten1, spalte2, .usw. FROM tabelle1 benötigts Du nicht für JOIN.

    Das Schema sieht in etwa so aus:

    SQL
    SELECT
        tabelle1.spalte1,
        tabelle2.spalte2
    
    FROM
        tabelle1
    
    JOIN
        tabelle2
        on tabelle2.Id = tabelle1.tabelle2_Id

    Ach, ich sehe gerade, habs falsch gesehen, sorry.

    Setz doch bitte zukünftig Codes in Code-Tags, dann kann man das besser lesen.

  • Du vermischst da was. SELECT spalten1, spalte2, .usw. FROM tabelle1 benötigts Du nicht für JOIN.

    Das Schema sieht in etwa so aus:

    SQL
    SELECT
        tabelle1.spalte1,
        tabelle2.spalte2
    
    FROM
        tabelle1
    
    JOIN
        tabelle2
        on tabelle2.Id = tabelle1.tabelle2_Id

    Ach, ich sehe gerade, habs falsch gesehen, sorry.

    Setz doch bitte zukünftig Codes in Code-Tags, dann kann man das besser lesen.


    aber ich muss ja aus tabelle1. 2 sachen ziehen (nämlich heim und auswärts team die gegeneinander spielen) und aus tab 2 dann die Id oder geht das gar nicht ?

  • Du hast da aber schon einen PHP-Fehler, mit dem das anfängt:

    Nutze ErrorReporting, dann wäre das an der Stelle schon um die Ohren geflogen.


    Aber selbst dann ist die Query noch falsch, Dein Stand ( von PHP angesehen )

    SQL
    SELECT
        games.TEAMHOME,
        games.TEAMAWAY,
        teams.ID
    FROM
        fussballseite
    
    INNER JOIN
        teams ON
        games.TEAMHOME, TEAMAWAY=teams.ID

    Du willst eigentlich von fussballseite ganz andere Spalten haben ( mal abgesehen davon, dass keiner weiß, woher Du das games zauberst?! ), nämlich nur die Tore für die Heim- und die Auswärtsmannschaft. Dazu über die IDs verknüpft die beiden Mannschaften, dann käme das aber eher in so eine Richtung:

    SQL
    SELECT
        fussballseite.Spieltag,
        fussballseite.toreHeim,
        fussballseite.toreAuswaerts,
        teamHeim.teamName,
        teamAuswaerts.teamName

    Das wären die Daten, die Du benötigst. Jetzt musst Du nur noch die Tabellen entsprechend zusammenfügen. Du benötigst auf jeden Fall schon mal die Tabelle fussballseite:

    SQL
    FROM
        fussballseite

    Jetzt fehlen nur noch die beiden Teams. Da diese in der selben Tabelle Zeilen basiert stehen, musst Du die Tabelle pro Team einbinden:

    SQL
    JOIN
        teams AS teamHeim
        on teamHeim.Id = fussballseite.teamHeimId
    
    JOIN
        teams AS teamAuswaerts
        on teamAuswaerts.Id = fussballseite.teamAuswaertsId

    Nun brauchst Du eigentlich nur noch Deine Spaltenbezeichner einsetzen...

  • ich bin verwirrt offentlich haben wir hier ein verständigungs problem.

    Meine Datenbank heisst fussballseite eine tabelle davon Games (da sollen die spielergebnisse rein). und eine tabelle namens teams. daher die namen "teams" und "games".


    danke für die infos ich schaue direkt mal drüber

  • Dazu habe ich nun noch eine zweite DB erstellt

    Von einer dritten hast Du bisher nichts erwähnt. Wieder falsch verstanden, sorry.

    Du meintest ja fussballseite wäre die DB, dann ist Deine Query in #6 aber totaler Schwachsinn.

    Vielleicht solltest Du mal im Detail Deine Tabellen beschreiben, bevor das hier nur ein rumgerate wird.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!