Results mehrerer Querys in ein Array verpacken

Gifty43

Erfahrenes Mitglied
Hallo Zusammen

Habe da ein "kleines" Problemchen. Und zwar habe ich drei verschiedene Abfragen aus einer SQL-DB mit jeweils zwei Angaben: Name, Wohnort.

Die drei Results kommen aus drei verschiedenen Tabellen, wobei der Spaltenname von Tabelle zu Tabelle unterschiedlich ist. Z.B: Ist der Wohnort als "ort", "wohnort" oder "heimat" abgespeichert.

Das Ziel ist, das ich die Results der drei verschiedenen Arrays ein Array verpacken und nach dem Ort in alphabetischer Reihenfolge sortieren kann.

Die Abfragen ($tab1,$tab2 und $tab3) sind geschrieben und funktionieren.
Spaltenname lauten wie folgt:
$tab1 = name,ort
$tab2 = name,heimat
$tab3 = nachname,wohnort

Wie kann ich jetzt die Results dieser drei Query's in einem Array (als name,wohnort)ablegen?

Besten Dank für jeden Input.
 
Hi

da die Werte aus einer Datenbank kommen, würde ich diese über einen union verbinden und ausgeben.

bsp. für die SQL

select name, ort from tab1
union
select name, heimat as ort from tab2
union
select nachname as name, wohnort as ort from tab3
order by name

Wichtig ist beim union, dass die Spaltennamen immer die gleiche Bezeichung haben, ansonsten Aliasse einsetzen.
 
UNION... kannte ich gar nicht, aber es funktioniert wunderbar.
Besten Dank für die Hilfe. :)

Hätte da jedoch noch eine kleine weitere Frage:

Kann ich im PHP-Script nachher auslesen, von welcher Tabelle welcher Datensatz stammt? Falls das nicht geht, wie kann ich (neben "name" und "ort") noch eine zusätzliche Spalte "tabelle" einfügen, obwohl diese in der DB nicht vorhanden ist?

In dieser Spalte "tabelle" würde dann bei jedem Datensatz entweder "tab1","tab2","tab3" (je nach dem aus welcher Tabelle der jeweilige Datensatz stammt) stehen.
 
Zuletzt bearbeitet:
Was du machen kannst ist deinen Variablen andere Namen geben, als in der Datenbank die Felder heißen. Das machst du mit as

Code:
select name as tab1_name, ort as tab1_ort from tab1
 
In dieser Spalte "tabelle" würde dann bei jedem Datensatz entweder "tab1","tab2","tab3" (je nach dem aus welcher Tabelle der jeweilige Datensatz stammt) stehen.

Du kannst auch eine Wert setzen, wenn keine Spalte vorhanden ist.

So kannst Du die Tabellen z.B. auch unterscheiden.

SELECT feld,'1' tabelle FROM tab1
 
Zurück