Zuordnungsproblem mit UNION SELECT

Sebigf

Erfahrenes Mitglied
Hallo zusammen !

Ich habe eine Query mit drei Tabellen erstellt, mithilfe von UNION SELECT. Das ganze sieht von der Struktur wie folgt aus:

Code:
        SELECT tab1.id, tab1.headline, tab1.subheadline, UNIX_TIMESTAMP(tab1.added) AS date FROM tab1 UNION 
        SELECT tab2.id, tab2.headline, tab2.subheadline, UNIX_TIMESTAMP(tab2.added) AS date  FROM tab2 UNION 
        SELECT tab3.id, tab3.headline, tab3.subheadline, UNIX_TIMESTAMP(tab3.added) AS date  FROM tab3 
        ORDER BY date DESC LIMIT 0, 3

Nun ist es aber so, dass ich jeweils wissen muss, woher die Sachen gerade kommen. Also ich will wissen, kommt der Eintrag XY aus "tab1, tab2 oder tab3" ?

Wie kann ich das am besten lösen ?



### Ich muss bei jeder Tabelle normalerweile einen JOIN machen, weil ich noch eine Infos zu dem Ensprechendem Eintrag brauche, nämlich die Kategorie ! Wie kann ich das mit dem JOIN soweit lösen, auch wenn UNION mit drin ist ?

Danke
 
Hi,

Also die einfachste Möglichkeit wäre, wenn du in deinem Query einfach den Tabellenname mit ausgibst.

also:
Code:
SELECT ..., 'tab1' FROM tab1 WHERE...
UNION
SELECT ..., 'tab2' FROM tab2 WHERE....
....
 
Oha ! Das geht so einfach ?
Aber wie muss ich diesen Wertn ansprechen, sodass er wirklich in einer VAR abgelegt werden kann ? :)
 
Hi,

wenn du

Code:
SELECT ..., 'tab1' as tab FROM tab1 WHERE...
UNION
SELECT ..., 'tab2' as tab FROM tab2 WHERE....
....

machst, kannst du anschliessend $recordset['tab'] ganz einfach auslesen (dies ist ein PHP Beispiel)
Ohne das "as tab" dürftest du sogar das problem haben, das das union nicht geht weil die Feldnamen dann tab1, tab2, tab3 usw sind, und bei Union müssen die Feldnamen ja eigentlich identisch sein, kann mich aber auch irren und nur der row_count ist maßgebend. Wenn du aber drauf zugreifen willst, solltest du dem Feld auf jeden Fall immer den gleichen Namen geben.

Gruß

Marcus

Gruß
 
Zurück