MySQL - Zwei Tabellen in Abfrage zusammenführen

d-braun

Erfahrenes Mitglied
Hi,

ich stehe gerade vor ne kleinen Problemchen. Angenommen ich habe folgendes als Ausgangslage (frei Erfunden zur Veranschaulichung also nicht wunden):
Code:
Tabelle: produkt_a
|------------------------------------------|
| ProduktA_ID	| Laenge	| Monat	| Jahr |
|==========================================|
| 1				| 23		| 4		| 2010 |
| 2				| 5			| 2		| 2010 |
| 3				| 32		| 3		| 2010 |
|------------------------------------------|


Tabelle: produkt_b
|------------------------------------------|
| ProduktB_ID	| Breite	| Monat	| Jahr |
|==========================================|
| 1				| 5			| 1		| 2010 |
| 2				| 32		| 5		| 2010 |
| 3				| 23		| 6		| 2010 |
|------------------------------------------|

Nun brauche ich aus den beiden Tabellen alle Daten sortiert nach Monat und Jahr. Zwecks Performance möchte ich jedoch auf eine Hilfstabelle verzichten. Gibt es eine Möglichkeit ein Ergebnis wie dies hier z.B. zu erhalten:
Code:
Abfrageergebnis
|-----------------------------------------------------------------------|
| ProduktA_ID	| ProduktB_ID	| Laenge	| Breite	| Monat	| Jahr	|
|=======================================================================|
| 0				| 1				| 0			| 5			| 1		| 2010	|
| 2				| 0				| 5			| 0			| 2		| 2010	|
| 3				| 0				| 32		| 0			| 3		| 2010	|
| 1				| 0				| 23		| 0			| 4		| 2010	|
| 0				| 2				| 0			| 32		| 5		| 2010	|
| 0				| 3				| 0			| 23		| 6		| 2010	|
|-----------------------------------------------------------------------|

Bei ner normalen Abfrage werden die Tabellen einfach hinten dran gehängt, mit nem Join hab ich es bisher auch nicht hin bekommen.

Ideen? Tipps?

Gruß
 
Zuletzt bearbeitet:
Code:
SELECT produktA_ID, 0, Laenge, 0, Monat, Jahr FROM produkt_a
UNION SELECT 0, produktB_ID, 0, Breite, Monat, Jahr FROM produkt_b
ORDER BY 6 DESC 5 DESC

Das müsste so eigendlich funktionieren. Versuchs mal :)
 
Hallo,

so sollte es funktionieren:
SQL:
SELECT produktA_ID, NULL AS produktB_ID, Laenge, NULL AS Breite, Monat, Jahr FROM produkt_a
UNION
SELECT NULL, produktB_ID, NULL, Breite, Monat, Jahr FROM produkt_b
ORDER BY Jahr, Monat
Ich kenne deinen Anwendungsfall zwar nicht, aber NULL statt 0 fand ich hier logischer.

Grüße,
Matthias
 
Super Danke.
Wusste garnicht dass ich während der Abfrage Werte erweitern kann. Aber mit "NULL AS" ist es wohl eleganter ;)

Edit:
Wenn mir jetzt noch einer sagt wie ich im neuen Design das Thema als "erledigt" markiere bin ich erstmal glücklich :D
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück