MySQL Abfrage über 2 Tabellen
Christian
- datenbank
Ich habe 2 identische Tabellen; eine dient als Archiv, die andere als Aktuell DB. Einträge werden, wenn nicht mehr benötigt, ins Archiv verschoben. Ich kann nun Einträge aus dem Archiv suchen, oder Einträge aus Aktuell
(select * from archiv where ....) bzw.
(select * from aktuell where ...).
Wie kann ich aber ein ResultSet aus beiden Tabellen bilden?
(select * from archiv, aktuell where ....)
DANKE für Eure Tipps
Christian
Hi,
ich hoffe (kenne es nur von anderen DB, in MySQL noch nicht ausprobiert...), dass du mit einem Union weiterkommst...
Vorraussetzung ist, dass du eine identische Spaltenzahl in gleicher Reihenfolge selektierst, also etwa so:
(select * from archiv where ....) bzw.
(select * from aktuell where ...).
SELECT name, vorname, beitrag, 'archiv' FROM archiv WHERE ...
UNION
SELECT name, vorname, beitrag, 'aktuell' FROM aktuell WHERE...
MfG
Rouven
SELECT name, vorname, beitrag, 'archiv' FROM archiv WHERE ...
UNION
SELECT name, vorname, beitrag, 'aktuell' FROM aktuell WHERE...
Hi,
soweit ich weiß, gibt es UNIONs erst ab MySQL 4, was es bei meinem Provider nicht gibt. Bei 3.x muß man sich ranrobben; wie das geht, lernt man zum Beispiel hier: http://www.nstep.net/~mpbailey/programming/tutorials.union.php.
HTH Robert
Leider funktioniert die LEFT JOIN Sache nicht!
Habe in meiner DB eine Tabelle _dummy mit einem Feld num (TinyInt r Länge 1) angelegt und zwei Records erstellt (0,1).
Folgende Abfrage ist nicht erfolgreich:
select * from _dummy AS D
LEFT JOIN tab1 ON (D.num = 0 AND feld1 = '2003-05-01')
LEFT JOIN tab2 ON (D.num = 1 AND feld1 = '2003-05-01')
die abschliessende WHERE D.num Klausel habe ich weggelassen.
Info:
MySQL 3.23.xx
Hallo Christian,
man kann alle Einträge (Archiv und Aktuell) in eine Tabelle schreiben und einfach nur in einer zusätzlichen Spalte ein Flag setzen, z.B. archiv='true'. Dadurch sind alle Einträge gekennzeichnet und man hat die Möglichkeit alle Einträge, nur archivierte oder aktuelle abzufragen. So habe ich dieses Problem damals gelöst.
Gruss
André
Morning,
bin leider noch nicht gescheiter (eher gescheitert)
gescheit - gescheiter - gescheitert
____________________________________________________
ich möchte die beiden tabs nicht zu einer zusammenlegen. das hatte ich schon. das sie sehr groß wird (ist) und ich doch einige abfragen machen muss, wird das mit einer tab ein wenig langsam. jetzt brauche ich nur mehr die winzige tab bearbeiten und bin wesentlich schneller. für spezialabfragen möchte ich aber dann doch wieder in beiden tabs wühlen. ich muss aber alle felder zurückbekommen und nicht einzelne (select * ... und nicht select datum, zeit from ...).
grüße
christian