MySQL: 3 Tabellen miteinander sortieren

Hattrix

Erfahrenes Mitglied
Hallo,

ich habe 3 Tabellen:

Zeit1 ... wert ... datum
Zeit2 ... wert ... datum
Zeit3 ... wert ... datum

Zeit 1 bis 3 sind die tabellen, "wert" und "datum" die Spalten dazu. Die heißen auch bei jedem gleich.

Alle 3 Tabellen sind gefüllt mit Daten. Unterschiedliche Datumsangabe, der "wert" interessiert hierbei nicht.

Ich will gern, dass ich alle 3 Tabellen so miteinander verknüpfen kann, damit ich nach "datum" sortieren kann. Mit INNER JOIN und UNION kam ich nicht zum Erfolg.

Ich bitte um Hilfe eines SQL-Statements.
 
Hallo,

was hast du denn bisher probiert?

Bei UNION muß Du aufpassen welchen Typ du nimmst. Wäre aber auch meine erste rangehensweis. Außerdem ist die sortierung erst am Ende des statements fällig. Also poste mal Dein script.

Grüße
 
SQL:
SELECT wert,datum
FROM zeit1
UNION
SELECT wert,datum
FROM zeit2
UNION
SELECT wert,datum
FROM zeit3

Und egal was ich dann mit der Sortierungfunktion mache, er kann die Spalte datum nicht zuordnen. :(
 
Min Hattrix,

versuche es so:
SQL:
Select wert, datum from (
SELECT wert,datum
FROM zeit1
UNION ALL
SELECT wert,datum
FROM zeit2 
UNION ALL
SELECT wert,datum
FROM zeit3
) 
ORDER BY Datum

UNION ALL statt UNION verhindert, dass die Sätze schon beim UNION sortiert und deren Einmaligkeit sichergestellt wird. (Du sortierst ja selbst und willst je vielleicht auch Sätze mit gleichen Datum und gleichem Wert aus zwei Quelltabellen sehen.
Ich würde noch zusätzlich eine Spalte "Quelle" einfügen, damit Du die Originaltabelle identifizieren kannst.

SQL:
Select wert, datum, quelle from (
SELECT wert,datum, 'Zeit1' as quelle
FROM zeit1
UNION ALL
SELECT wert,datum, 'zeit2'
FROM zeit2 
UNION ALL
SELECT wert,datum, 'zeit3'
FROM zeit3
) 
ORDER BY Datum

Grüße
Biber
 
Hilft leider nicht ... wenn ich es ausführe, bekomme ich immer folgende Fehlermeldung:

SQL:
#1248 - Every derived table must have its own alias
 
Hilft leider nicht ... wenn ich es ausführe, bekomme ich immer folgende Fehlermeldung:

SQL:
#1248 - Every derived table must have its own alias

Hmm, dann tu ihm doch den Gefallen...

SQL:
SELECT a.datum, a.wert , a.quelle FROM (

SELECT z1.datum, z1.wert, 'Zeit1' as quelle FROM zeit1 as z1
UNION ALL
SELECT z2.datum, z2.wert, 'Zeit2'  FROM zeit2 as z2
UNION ALL
SELECT z3.datum, z3.wert, 'Zeit3'  FROM zeit3 as z3
) AS a
Order By a.Datum

Grüße
Biber
 
SQL:
#1142 - SELECT command denied to user 'xxxxx'@'localhost' for table 'zeit1'

Ahja, alles klar. Keine Rechte? Ich arbeite mit den Daten seit vielen Monaten oder ist an der Anweisung irgendwas anderes? Ich glaub's kaum!?
 
Zurück