Entwickler-Ecke
Datenbanken - Table vom Feldnamen finden
Freiberger - Do 21.02.08 20:36
Titel: Table vom Feldnamen finden
Hallo,
ich habe eine beliebige SQL-Abfrage...( die von verschieden User kommen kann )
zB. SELECT A.name,B.*,C.name,A.ort,C.name
FROM Kunde A
LEFT JOIN Table2 B WHERE B.pos=A.pos
LEFT JOIN Mitarbeiter C WHERE C.nr =B.nr
Die daraus entsehend Tabelle hat das Problem, dass die Feldnamen sehr "Benutzerunfreundlich" sind.
In einer anderen Tabelle habe ich eine Übersetzung in einen verständlichen Text.
Ich kann also alle Feldnamen durchlaufen, TABLE & FIELDNAME filtern und erhalte daraus einen Text, den ich dirkt nach der Abfrage in Query.Fields[x].DisplayLabel schreibe.
Das Problem ist nur, dass es zB bei Table A & C den Feldnamen "Name" gibt.
Wie kann ich jetzt rausbekommen, welcher FELDNAME zu welchem TABLE zuordenbar ist ?
Mit Query.Fields[x].origin geht es nur bei bestimmten Abfragen...
Bitte um Hilfe...
mkinzler - Do 21.02.08 20:41
SQL-Anweisung
1: 2: 3: 4: 5: 6:
| SELECT A.name as aname,B.*,C.name as c.name,A.ort FROM Kunde A LEFT JOIN Table2 B WHERE B.pos=A.pos LEFT JOIN Mitarbeiter C WHERE C.nr =B.nr; |
Freiberger - Do 21.02.08 20:49
Hy, so etwas hatte ich auch schon versucht,
dann bekomme ich für A.name & C.name den Wert in origin angezeigt.
Die Abfragen kommen aber nicht von mir, ich will sie nur "übersetzen"
Ich könnte den SQL-Text durchlaufen und überal AS anhängen.
Aber bei B.* AS B.* bekomme ich keine Werte in Fields[x].origin
Gibt es keinen Bezug ? Fields[x].Table gibt es leider nicht...
Freiberger - Do 21.02.08 20:50
Hy, so etwas hatte ich auch schon versucht,
dann bekomme ich für A.name & C.name den Wert in origin angezeigt.
Die Abfragen kommen aber nicht von mir, ich will sie nur "übersetzen"
Ich könnte den SQL-Text durchlaufen und überal AS anhängen.
Aber bei B.* AS B.* bekomme ich keine Werte in Fields[x].origin
Gibt es keinen Bezug ? Fields[x].Table gibt es leider nicht...
mkinzler - Do 21.02.08 20:57
Eine andere Möglichkeit gibt es aber nicht, da in der Ergebnismenge keine Bezüge auf die Herkunft enthalten sind.
BTW. * Abfragen sollte man sowieso vermeiden und Abfargen mit mehrmaligen Feldname auch.
Freiberger - Do 21.02.08 21:09
Ja, das stimmt. Macht aber nicht jeder.
Und wenn ich in verschieden Tabellen den selben Feldnamen habe (zB als Index), dann habe ich ein rießen Problem.
Schade, es muß doch irgend wo einen Bezug geben...
mkinzler - Do 21.02.08 21:16
Nur anhand der Position in der Ergebnismenge
Freiberger - Do 21.02.08 21:19
wie weinst du das ?
Bei B.* weiß ich doch nicht, wieviele Felder es gibt ?
mkinzler - Do 21.02.08 21:21
1. Feld mit dem Namen von Tabelle a, 2. von Tabelle c, ...
Freiberger - Do 21.02.08 21:25
und wenn ich A.*,B.*,C.* habe ?
dann müßte ich rausbekommen, wieviele Felder A,B & C hat...
mkinzler - Do 21.02.08 21:29
Das 1. Feld mit dem Namen 'Name' gehört dann trotzdem zu Tabelle a, das 2. zu B ...
Freiberger - Do 21.02.08 21:38
das stimmt allerdings... sehr gute Idee
Aber ich muß an irgenwas erkennen können, wenn die nächste Tabelle anfängt. A.*,B.*,C.*
Das Feld "Name" kann ja an verschiedenen Positionen sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!