Ankündigung

Einklappen
Keine Ankündigung bisher.

2 Tabellen auswerten

Einklappen

Neue Werbung 2019

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

  • 2 Tabellen auswerten

    Ich habe für eine Browserspiel folgende Tabellen:

    fights:
    |id|date|winner|winnervalue|loser|loservalue
    |1|1278268480|Player1|100|Player2|80
    |2|1278268480|Player3|80|Player4|50

    und die Tabelle highscore:
    |position|player|points
    |1|Player1|1000
    |2|Player2|900
    |3|Player3|750

    Da man nur "Gegner" in attackieren kann die ähnlich viel Punkte und natürlich schwächer sind möchte ich dies auswerten. Nur bekomme ich das nicht ganz hin schwache Gegner aus der einen Tabelle zulesen und gleichzeitig die Punkte aus der highscore Tabelle.

    Im Prinzip müßte das ungefähr so aussehen:

    SELECT * FROM fights WHERE loservalue<75 AND highscore.points<950

  • #2
    Was Du suchst ist ein JOIN. Das ist Basiswissen im Bereich Datenbanken. Deshalb:

    http://www.php.de/php-einsteiger/489...rundlagen.html
    [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


    • #3
      Beschaftige dich mit JOINs:
      SELFHTML Artikel / Datenbanken
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        Danke scheint super zu funktionieren, ich hab das ungefähr so gemacht:

        SELECT * FROM highscore, fights WHERE fights.loservalue<75 AND highscore.points<950

        War eigentlich ganz einfach, aber trotzdem danke.

        PS: Oder gibt es da noch eine bessere Lösung ?

        Kommentar


        • #5
          Obwohl mir nicht ganz klar geworden ist, was Du abfragen möchtest, mal ein kleines Beispiel dazu. Der JOIN erfolgt zwischen den Player-Namen, das ist nicht sehr günstig wegen verschiedener Schreibweise (groß/klein/etc.). Du brauchst eine Tabelle mit den Spielern und in die Tabelle fights muss dann die Spieler-ID.

          Code:
          CREATE TABLE fights (
           id INT NOT NULL,
           date INT NOT NULL,
           winner VARCHAR(10) NOT NULL,
           winnervalue INT NOT NULL,
           loser VARCHAR(10) NOT NULL,
           loservalue INT NOT NULL
          );
          
          INSERT INTO fights VALUES
          (1,1278268480,'Player1',100,'Player2',80),
          (2,1278268480,'Player3',80,'Player4',50);
          
          CREATE TABLE highscore (
           position INT NOT NULL,
           player VARCHAR(10) NOT NULL,
           points INT NOT NULL
          );
          
          INSERT INTO highscore VALUES
          (1,'Player1',1000),
          (2,'Player2',900),
          (3,'Player3',750);
          
          
          SELECT f.winner, f.loser, hl.points, hl.points
            FROM fights f
            JOIN highscore hl
              ON f.loser = hl.player
           WHERE f.loservalue < 85
             AND hl.points < 950
          ORDER BY f.winner;
          
          +---------+---------+--------+--------+
          | winner  | loser   | points | points |
          +---------+---------+--------+--------+
          | Player1 | Player2 |    900 |    900 |
          +---------+---------+--------+--------+
          1 row in set (0.00 sec)
          
          mysql>
          Grüße
          Thomas

          Kommentar

          Lädt...
          X