SQL MS SQL eigene Tabellennamen als Spalte im select ausgeben?

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.075
Gibt es eine Möglichkeit den eigenen Tabellennamen in einem SELECT ausgeben zu lassen. Es geht darum auf eine Detailseite mehrere Tabellen zu mappen. Da man aber nicht alles von hand geändert werden soll (ungefähr 80 Seiten im PHP Code), habe ich gedacht, eventuell kann MS SQL sowas ähnliches wie Reflection in der DB. Bin kein DB experte und der typ der das machen kann ist eigentlich im Urlaub.

Ich selbst habe schon gesucht, aber nichts vernünftiges gefunden!

Ich brauche keine vollständige Lösung. Hier kann schon ein richtiger Stichwort helfen!

Danke!
 
naja komtm auf die sql abfrage an, aber
du könntest z.b. einfach ien spalte hinzufügen mit dem tabellen namen
so wirde das aussehen ungefähr:
select 'Tabel1' "Tabellennamen" , * from Tabel1

hier bei wär das in ' ' der Tabellen namen und in " " der Spaltennamen.
wäre aber nur ein lösung wenn es select mittels union zusammen gefügt werden
oder ähnliches.
 
Ich kanns hier nicht testen aber
Code:
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
soll alle Tabellennamen der aktuellen Datenbank ausgeben.

Wenn dann das Mappen vollständig automatisch funktionieren soll und alle SELECT-Anweisungen gleich aussehen, dann könnte man ja mit der oben genannten Abfrage ein Array erzeugen, welches dann nach und nach abgearbeitet wird.
 
@ Whiz-zarD: Habs mal für dich getestet. Funktioniert soweit, man muss nur noch den Datenbankname davor packen wenn man eine spezielle Datenbank haben will, sonst holt er das von der sys-Datenbank.

SELECT table_name FROM testdb.INFORMATION_SCHEMA.TABLES
 
Das problem ist, die Tabellen werden dynamisch erstellt... kann man nicht herausfinden, welche Tabelle gerade abgefragt wird?

INFORMATION_SCHEMA.TABLES liefert nur alle Tabellen in der Datenbank die man gerade benutzt. Wenn die Datenbank aber hunderte von Tabellen hat, ist es vorbei mit der Abfrage.

Ich habe schon gedacht eine Spalte nachzuziehen. Kann aber selbst nicht machen (eigentlich schon), da das ganze System ja nicht von mir ist.

Man kann auch vorläufig auch die SQL abfrage durchkämen und nach dem FROM teil suchen, wo es steht welche Tabelle gerade verwendet wird. Ich brauche diese Information nur weiter zu geben, da die Tabellenname erst bei der Detailseite gebraucht wird und nicht sofort.
 
Also steht der Tabellenname schon irgendwo fest im Code, oder wie?

Irgendwie versteh ich nicht, wo das Problem liegt. Das Mapping funktioniert automatisch. Doch irgendwo muss doch der Name der Tabelle herkommen. Der wird dann wohl sicherlich irgendwo als Variable in PHP gespeichert, oder nicht?
Wenn er dann als Variable auftaucht, kann man die Variable doch auch im SELECT-Teil einbinden.
 
kannst doch einfach ein view erstellen der an die jetztige tabelel andockst dann kansnt du test machen ohen das ganze system damit zu betreffen
 
Es ist so...

Die Es gibt eine große Tabelle mit allen möglichen Einträgen. Wenn man jetzt die Details einer Zeile ansehen will Klickt man auf den Button und wird auf die andere Seite weitergeleitet. Die Abfrage für die Detailseite ist die gleiche außer den Namen der Tabelle. Dieser Name muss gleich sein mit dem Namen der große Tabelle. Es sind ungefähr 80 PHP Seite oder auch mehr. Jetzt auf jede einzelne seite zu gehen und dort die stupide korrektur zu machen, dass es immer Tabellenname übergeben wird ist einfach "geil" oder? Wenn ich aus der SQL Abfrage den Namen der Tabelle herausfinden kann, dann muss ich nur an einer Stelle was ändern. Diese Änderung kann man mit Search Replace ALL machen.

Ich habe auch später den Vorteil, dass das ganze System viel einfacher sich warten lässt als wenn ich jetzt auf jede Seite hingehen und neue Zeile einspflege und dann doch ändern muss...

Der wird dann wohl sicherlich irgendwo als Variable in PHP gespeichert, oder nicht?
Jain. Es gibt Select Abfrage wo der Name der Tabelle vorkommt. Es wird nicht in eine bestimmte Variable abgelegt.


EDIT: Sorry, meinte nicht so böse!
 
Zuletzt bearbeitet:
Zurück
Oben