2010-04-07 15 views
14

würde Ich mag so etwas tun:MySql SELECT AS - Fügen Sie alle Feldnamen

SELECT table.id AS prefix_id, table.name AS prefix_name 

... und haben das Präfix hinzugefügt dynamisch auf alle Feldnamen anstatt sie alle manuellen Auswahl (dh SELECT table.* AS prefix_* oder etwas)

Hoffentlich habe ich das genau beschrieben. Irgendwelche Gedanken?

bearbeiten

klar zu sein, der Grund ist, ich bitte um sicherzustellen, dass mein Abfrageer enthält jede Spalte aus jeder Tabelle, wenn ich rufe auch es doppelte Feldnamen. Zum Beispiel könnte ich eine Tabelle mit vielen Feldern haben, was bedeutet, dass ich nicht alle Felder manuell aliasieren möchte. Weiter, wenn 3 Tabellen ein Feld mit dem Namen name haben, enthält mein Ergebnis keine drei name Ergebnisse; es wird eins haben. Ich möchte Ambiguität mit meinen Spaltennamen vermeiden.

+0

Was ist der Zweck des Präfixes ist? Ich denke, ich habe eine Idee, aber es hängt vom Kontext Ihres Problems ab. – JohnFx

+0

Wenn ich Informationen aus zwei Tabellen abrufe und beide einen Index von 'id' und eine Spalte 'name' haben, gibt es keine Ergebnisse aus beiden Tabellen zurück. – jay

+0

Bearbeitete die Frage um * hoffentlich * hilfreicher zu sein. – jay

Antwort

0

Wenn Sie die Ergebnisse referenzieren, können Sie jede Spalte nach der Tabellenname.Spalte referenzieren. Daher haben Sie ein Standardpräfix, das an jeden Spaltennamen angehängt wird.

SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name; 
0

Ich kann eine Situation vorstellen, wo dies sinnvoll sein könnte, wenn Sie mehrere Datenmodelle in einer Liste, die Sie benötigen aus einer einzigen SQL-Abfrage zu füllen.

Es sollte möglich sein oder Spalten vor dem auf diesen Tabellen Abfrage DESCRIBE zu verwenden SELECT. Auf diese Weise kennen Sie alle Feldnamen für jede Tabelle. Dies hilft jedoch nicht bei möglichen Feldnamenkonflikten.

Ich werde nicht kommentieren, wenn dies eine gute Idee ist oder nicht. Jeder Entwickler muss entscheiden, wo er die Grenze zwischen Flexibilität, Faulheit und guten Praktiken ziehen soll.

0

In mysqli können Sie die Funktion php

mysqli_fetch_fields()

für fieldinformations - so erhalten Sie den Tabellennamen von jeder Collumn