# [MySQL] Zwei Spalten aus unterschiedlichen Tabellen zusammenfügen



## Andre_Java (1. Juni 2010)

Ich habe zwei Tabellen, die wie folgt aussehen:


```
Tabelle1:

Wert1 |  Sekunden
200   |  11
124   |  20

Tabelle2:

Wert8 | Sekunden
111   |  9
500   | 40

Erhalten möchte ich folgendes:

Wert1| Wert8 | Sekunden
     | 111   |   9
200  |       |  11
124  |       |  20
     | 500   |  40
```

Ich habe viel mit JOIN experimentiert, komme aber nicht zu dem gewünschten Ergebnis. Für einen Tipp wäre ich dankbar.


----------



## timestamp (1. Juni 2010)

Hi

Versuch es mal hiermit:

```
SELECT 
  table1.sekunden AS sekunden1, 
  table2.sekunden AS sekunden2, 
  table1.wert1, 
  table2.wert8
FROM 
  table1,
  table2
```


----------



## Andre_Java (2. Juni 2010)

Das klappt leider auch nicht, das Ergebnis sieht so aus:


```
sekunden1 |sekunden2 | wert1 | wert8
11 	  | 9 	     | 200   |111
20 	  | 9 	     | 124   |111
11 	  | 40       | 200   |500
20 	  | 40       | 124   |500
```


----------



## xloouch (2. Juni 2010)

Je nach Sprache, würde ich daraus zwei Queries machen, das Result in je einen Array pappen und musst du dir den Array zusammenbasteln.

So wies mir ist, gibts so was unter SQL nicht. (Sogar der Union hat das gleiche Resultat gebraucht)


----------



## tombe (2. Juni 2010)

Wie wäre eine Lösung mit einer temporären Tabelle:


```
//Tabelle temp erstellen
$sql ="CREATE TEMPORARY TABLE temp(wert1 SMALLINT (5) UNSIGNED, wert8 SMALLINT (5) UNSIGNED, sekunden SMALLINT (5) UNSIGNED)";
mysql_query($sql);

//Daten aus Tabelle "tabelle1" eintragen
$sql = "INSERT INTO temp (wert1, sekunden) SELECT wert1, sekunden FROM tabelle1";
mysql_query($sql);

//Daten aus Tabelle "tabelle2" eintragen
$sql = "INSERT INTO temp (wert2, sekunden) SELECT wert8, sekunden FROM tabelle2";
mysql_query($sql);

//Abfrage um die Daten der temporären Tabelle auszugeben
$sql = "SELECT wert1, wert2, sekunden FROM temp"
```


----------



## xloouch (2. Juni 2010)

Bin jetzt bei Temporären Tabellen nicht so bewandert. Aber wie lange bleiben die erhalten? Eine Transaktionslänge, oder wie lange?


----------



## Yaslaw (2. Juni 2010)

Union klingt gut

```
SELECT 
	Wert1,
	NULL AS Wert8,
	Sekunden
FROM
	table1
UNION SELECT 
	NULL AS Wert1,
	Wert8,
	Sekunden
FROM
	table2
```


----------



## tombe (2. Juni 2010)

xloouch hat gesagt.:


> Aber wie lange bleiben die erhalten? Eine Transaktionslänge, oder wie lange?



Sie leben nur so lange wie der Code ausgeführt wird.


----------



## xloouch (2. Juni 2010)

danke tombe  wussts nicht genau


----------



## tombe (2. Juni 2010)

@yaslaw: Chapeau!


----------

