# [MySQL] Spaltennamen von Tabelle (Left JOIN) einen Suffix geben



## TheNova (14. Februar 2006)

Hi all,

ich bin nun nach 2 Stunden googeln und auch hier im Forum nicht fündig geworden und zwar habe ich folgendes Problem.

Ich habe eine "products"-Tabelle in der es eine Spalte "mediumId" gibt und eine "medium"-Tabelle in der es "id, name" gibt und nun Join ich bei jedem Select die "medium"-Tabelle zu der "products"-Tabelle:


```
SELECT products.*, medium.* 
FROM products AS products 
LEFT JOIN medium AS medium ON products.mediumId = medium.id 
WHERE products.id = '1'
```

Nun möchte ich für ALLE Spaltennamen aus der "medium"-Tabelle einen Prefix vergeben, ist das möglich

Also das der Spaltenname von "medium.id" = mediumId ist.

Ich will damit vermeiden das wenn ich in der Tabelle medium eine neue Spalte hinzufüge, ich in jedem "products"-Query => medium.spaltenname AS mediumSpaltenname schreiben mussen. Oben habe ich "medium.*" geschrieben, dies ist leider nicht möglich da es in "medium" und "products" gleiche Spaltenname geben kann.

Bin für jede Hilfe dankbar!!

Gruß

Nova


----------



## melmager (14. Februar 2006)

dafür ist doch das as da 

um die namen zu kürzen 

statt

FROM products AS products 
LEFT JOIN medium AS medium ON products.mediumId = medium.id  

den
FROM products AS p 
LEFT JOIN medium AS m ON p.mediumId = m.id


----------



## TheNova (14. Februar 2006)

Hallo melmager,

vielen Dank für deine Antwort, aber: Mir ist schon klar wofür AS da ist, aber ich will ja auch nicht die Tabellennamen verändern, sondern die Spaltennamen meiner mittels JOIN hinzugefügten Tabelle. Und zwar sollen vor allen Spaltennamen welche aus der medium-Tabelle kommen medium stehen => id = mediumId.

Ich weiß das es nicht funktioniert, aber ungefähr so:


```
SELECT products.*, medium.* AS 'medium'+Spaltenname
FROM products 
LEFT JOIN medium ON products.mediumId = medium.id  
WHERE products.id = '1'
```

Ich hoffe ich habe mich nun verständlich ausgedrückt.

Gruß

Nova


----------



## hpvw (14. Februar 2006)

Du musst die Aliasnamen meines Wissens einzeln angeben:
	
	
	



```
select
  procucts.id as productId,
  medium.id as mediumId
  # usw.
from #...
```
Gruß hpvw


----------



## TheNova (15. Februar 2006)

Danke hpvw für deinen Beitrag.

Es scheint mir auch so als gäbe es keine andere Lösung, schade! Es wäre bestimmt gut zu gebrauchen wenn man den Spaltennamen, durch JOIN hinzugefügten Tabellen, einen Suffix bzw. Prefix geben könnte.

Vielleicht hat ja noch jemand anders eine Idee.

Gruß

Nova


----------



## boast (24. Januar 2008)

*push*, da ich atm exakt dasselbe Problem habe!

(user Tabelle sowie eine userGroup Tabelle, welche ich gemeinsam abfragen möchte, aber leider z.T. identische Spaltennamen haben)

Die Möglichkeit, jede Spalte einzeln mit "AS `xyz`" zu benamsen, scheint mir etwas... "un-extensible" 

Hat da jemand eine Idee?
Ich kam schon auf den Gedanken, die erste Tabelle als "erste Zeile" und die zweite Tabelle als "zweite Zeile" aus zu lesen.

(d.h., wenn man z.B. in PHP die Datenbankrückgabe zum erstenmal "fetcht", dass dann die Ergebnisse der ersten Tabelle kommen, beim zweiten mal diejenigen der zweiten Tabelle)


----------

