Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 3 - Tauschangebote anzeigen Teil 1

1. Die Abschnitte

2. Die Abfrage

Da ihr durch unseren View wohl schon ein wenig aus der Übung gekommen seid, was Joinen angeht, so arbeiten wir diesmal nicht damit, sondern bauen uns einen eigenen Query zusammen. Dazu legt ihr eine Methode names listSwapOffers an und packt den folgenden Code hinein.


$query 'SELECT
            a.id,
            a.von,
            a.preis,
            t.typ,
            m1.name as offer,
            m2.name as offerfrom,
            m3.name as offerto,
            s.stufe,
            w.wesen,
            c.gold,
            m3.gilde
          FROM
            tausch t
          INNER JOIN
            angebot a ON (a.id = t.angebot)
          INNER JOIN
            mitglied m1 ON (m1.id = t.mitglied)
          INNER JOIN
            mitglied m2 ON (m2.id = a.von)
          INNER JOIN
            mitglied m3 ON (m3.id = a.an)
          INNER JOIN
            charakter c ON (c.id = m1.charakter)
          INNER JOIN
            stufe s ON (s.id = c.stufe)
          INNER JOIN
            wesen w ON (w.id = c.wesen)
          WHERE m1.status = 1
            AND (a.von = '.$_SESSION['login'].' 
                 OR a.an = '.$_SESSION['login'].')
          ORDER BY a.id, t.typ DESC';

3. Umpf

... werden jetzt wohl einige denken. Aber keine Angst, ist halb so wild. Außerdem solltet ihr das Prinzip ja bereits kennen. Zuerst werden natürlich die Tabellen angebot und tausch verknüpft.


INNER JOIN
  charakter c ON (c.id m1.charakter)
INNER JOIN
  stufe s ON (s.id c.stufe)
INNER JOIN
  wesen w ON (w.id c.wesen)

Dann benötigen wir drei Spielernamen.


INNER JOIN
  mitglied m1 ON (m1.id t.mitglied)
INNER JOIN
  mitglied m2 ON (m2.id a.von)
INNER JOIN
  mitglied m3 ON (m3.id a.an)

Damit hätten wir schon drei weitere Joins erfasst. Anschließend holen wir uns zusätzliche Informationen des Spielers m1, macht wieder drei Joins.


INNER JOIN
  charakter c ON (c.id m1.charakter)
INNER JOIN
  stufe s ON (s.id c.stufe)
INNER JOIN
  wesen w ON (w.id c.wesen)

Und zu guter Letzt kümmern wir uns um den Suchfilter.


WHERE m1.status 1
  AND (a.von '.$_SESSION['login'].' OR a.an '.$_SESSION['login'].')
ORDER BY a.idt.typ DESC';

Der sorgt dafür, dass alle Tauschangebote aufgelistet werden, in der unser Gildenmeister involviert ist. Sei es nun als Anbieter oder Angebotener. Und das Ergebnis dröseln wir nun per PHP auf. Ach ja, ganz wichtig ist die primäre Sortierung über die Angebots-ID!

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt