Etwas komplexere mySQL Abfrage

Ui danke,es klappt...
wenn man das ganze jetzt in ner Schleife abfragt, gibt es dann noch ne Möglichkeit, herauszufinden, aus welcher Tabelle ich das gerade auslese? :)
 
Hallo,

ja, gib es. Du kannst im SQL ja zusätzlich noch eine Spalte erzeugen, die die Tabelle kennzeichnet, aus der du gerade abfragst:

SQL:
(SELECT t1.id, t1.name, t1.email, 'tabelle1' as tabname
   FROM t1)
 UNION ALL
(SELECT t2.id, t2.name, t2.email, 'tabelle2'
   FROM t2)
 UNION ALL
(SELECT t3.id, t3.name, t3.email, 'tabelle3'
   FROM t3)
ORDER BY id

Dann kannst du in der Schleife auf die Spalte "tabname" zugreifen und hast den Tabellennamen zur Verfügung.

Markus
 
vielen dank für eure Hilfe :)
habt mir sehr weitergeholfen

Edit: Sry, dass ich nochmal störe aber ich hab noch ein Problem: als ich versucht habe, daas ganze an eine WHERE Abfrage zu knüpfen gibt er mir nen Fehler aus (Dokumentation
#1064 - 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 'where `id` > 10 LIMIT 0, 30' at line 1 )
Die letzen Zeilen davor:

UNION ALL (
SELECT members_t3.id, members_t3.xp
FROM members_t3
)
WHERE `id` > 10

hoffe mir kann hier nochmal jemand helfen :D
 
Zuletzt bearbeitet:
Hallo,

wenn Du das Gesamtergebnis weiter einschränken möchtest mit einer WHERE-Klausel, dann kannst du z.B. folgendes machen:

SQL:
SELECT id, xp, tabname FROM
(
  SELECT id, xp, 'members1' AS tabname 
    FROM members_t1 
  UNION ALL
  SELECT id, xp, 'members2' 
    FROM members_t2 
  UNION ALL
  SELECT Id, xp, 'members3' 
    FROM members_t3
  ....
) allmembers
WHERE id > 10 
ORDER BY xp DESC
LIMIT 5;

Markus
 

Neue Beiträge

Zurück