Tabelle durch Value ansprechen
T-Rex
- datenbank
0 Matti Mäkitalo2 Vinzenz Mai0 dedlfix
Moin Leute,
heute würde ich gerne eine Tabelle durch einen Value ansprechen.
In einer Tabelle (zuordnung) hab ich ua. folgende Information:
ID; TABELLENNAME
1; tabelle
2; dings
3; zeugs
4; wasanderes
Dann hab ich da einen normalen Select Query:
select * from tabelle;
Das würde ich jetzt gerne durch sowas ersetzen:
select * from (select TABELLENNAME from zuordnung where ID = 1);
Geht sowas?
Gruß
T-Rex
Hi,
Das würde ich jetzt gerne durch sowas ersetzen:
select * from (select TABELLENNAME from zuordnung where ID = 1);Geht sowas?
Nein. Du kannst aber dein Datenbankdesign entsprechend umstellen. Wenn die Tabellen tabelle, dings, zeugs, wasanderes alle die gleichen Spalten haben, kannst du diese in eine einzige zusammenführen und den bisherigen Tabellennamen als neue Spalte mitführen. Du kannst dann über die neue gesamte Tabelle suchen mit der Zusatzbedingung, dass die Tabellennamenspalte deinen gewünschtem Tabellennamen entspricht.
Bis die Tage,
Matti
Hallo,
heute würde ich gerne eine Tabelle durch einen Value ansprechen.
In einer Tabelle (zuordnung) hab ich ua. folgende Information:
ID; TABELLENNAME
1; tabelle
2; dings
3; zeugs
4; wasanderes
Dann hab ich da einen normalen Select Query:
select * from tabelle;
das ist alles andere als "eine normale Abfrage". In normalen Abfragen ist * eher selten zu finden.
Das würde ich jetzt gerne durch sowas ersetzen:
select * from (select TABELLENNAME from zuordnung where ID = 1);
Geht sowas?
Diese Abfrage ist syntaktisch beinahe in Ordnung. Sie lieferte nur etwas anderes als Du erwartest. Um den Aliasnamen ergänzt und etwas lesbarer geschrieben, liefert folgendes Statement:
SELECT
a.*
FROM (
SELECT -- Großschreibung ist für SQL-Schlüsselwörter üblich
TABELLENNAME -- für Spalten oder Tabellennamen jedoch nicht
FROM
zuordnung
WHERE
ID = 1
) a;
bei Deinen Daten folgende Ergebnismenge:
TABELLENNAME
------------
tabelle
Dein Vorhaben ist daher nicht in dieser Form und nicht in jedem Datenbankmanagementsystem umsetzbar. Aber es gibt welche, die das können, was Du zu brauchen glaubst. Ob Deines dazugehört, kann ich nicht beurteilen, weil Du nicht angegeben hast, welches Du (in welcher Version) verwendest.
Ob das, was Du vor hast, eine gute Idee ist, ist wiederum eine andere Frage ...
Freundliche Grüße
Vinzenz
Hi!
select * from (select TABELLENNAME from zuordnung where ID = 1);
Geht sowas?
Ja, wenn du eine Lösung für MySQL suchst, aber sowas macht man doch nicht.
Jedenfalls kann man einem PREPARE einen String übergeben, der das zusammengebaute Statement enthält.
Lo!