Tabellen Alias

Times

Bekanntes Mitglied
Guten Tag liebe Community,

ich habe ein Problem mit dem ResultSetMetaData des ResultSets von java.sql:
Problem anhand eines Beispiels:

SQL:
SQL:
SELECT WIEGESATZ.*, RECHEMPF.*, KUNDE.*, SPEDITEUR.*
FROM WIEGESATZ
LEFT JOIN ADRESSE AS RECHEMPF ON WIEGESATZ.RechEmpf = RECHEMPF.SysID 
LEFT JOIN ADRESSE AS KUNDE ON WIEGESATZ.Kunde = KUNDE.SysID
LEFT JOIN ADRESSE AS SPEDITEUR ON WIEGESATZ.Spediteur = SPEDITEUR.SysID;

In einer Tabelle WIEGESATZ gibt es 3 Felder... dem Rechnungsempfänger, dem Kunden, und einem Spediteur.. diese 3 sind FK und beziehen sich auf den PK der Tabelle ADRESSE.

Was soll erreicht werden/Wozu brauch ich den Alias?
Dynamische Darstellung der Daten auf der GUI.. so kann der Kunde selbst entscheiden welche Spalten er haben möchte, und welche nicht.

Lösungsweg bisher:
Da es in einigen Tabellen gleichnamige Felder gibt, oder auch wie oben beschrieben SQL-Statements mit mehreren Joins auf die selbe Tabelle geben kann muss der Alias-Name bei der Auswahl bekannt sein.

rsMeta ist die ResultSetMetaData des ResultSet's!

Java:
rsMeta.getTableName(col+1) + "." + this.rsMeta.getColumnLabel(col+1)

So bekomme ich z.B. "Material.Name", "Material.ID" etc!

Nun zum Problem:
der Befehl "getTableName(col:int)" vom ResultsetMetaData gibt mir IMMER nur den original Tabellen-Namen zurück, aber nicht den Alias-Tabellennamen, welchen ich in dem SQL-Statement (in den Joins) festgelegt habe.

Also ich bekomme immer "Adresse.Name" bei RechEmpf, Kunde sowie Spediteur.

Wenn ich debugge und mir die genauen Felder vom ResultSetMetaData anschaue, dann sehe ich unter der Variable "tableName" meinen gewünschten Alias-Namen, jeddoch gibt es keine Methode um diesen abzurufen.. (getTableName liefert die Variable "originalTableName" aus ResultsetMetaData!)

Gibt es also eine Möglichkeit an diese Variable zu gelangen?

Danke :)

Falls ich mich zu undeutlich ausgedrückt habe, bitte Bescheid geben.. dann versuche ich es besser zu machen!
 

Thallius

Top Contributor
Ich würde die Tabellenspalten oderntlich benamsen. Dann entsteht auch kein gleicher Spaltenname und schon hast du keine Probleme mehr.

Zum Beispiel benennt man alle Spalten einer Tabelle "Adresse"

adrersse_name
adresse_vorname
etc...

Gruß

Claus
 

Times

Bekanntes Mitglied
Hallo Thallius,

ich glaube du hast mein Problem nicht richtig verstanden!
Es geht sich nicht um die Spaltennamen, sondern um den Alias der Tabelle welcher im JOIN entsteht
"...LEFT JOIN ADRESSE AS SPEDITEUR..." etc.

Bei deiner Lösung bräuchte ich dann für den Spediteur, dem Kunden und dem Rechnungsempfänger entweder jeweils dieselben Spalten oder 3x dieselbe Tabelle, aber danke dennoch für die Antwort :)

Falls jemandem noch eine andere Lösung in den Sinn kommt, bitte hierher schreiben.. habe es vorerst wie folgt gelöst:
Habe unter MySQL 3 Views von der Tabelle angelegt.. aber diese Lösung möchte ich nur ungern beibehalten, da dies einfach nicht in das Gesamtschema passt!

Liebe Grüße

Times
 

Thallius

Top Contributor
Was Du da sagst ergibt so einfach keinen Sinn. Wiso braucht man dreimal die gleiche Tabelle oder Spalten und was soll denn der Alias überhaupt bringen? Also ich kapiere Dein Konzept so nicht.

Zeig doch mal wie deine Tabellen aussehen und erkläre was für Daten da drin sind und was genau du rausholen willst vielleicht verstehe ich es dann.

Gruß

Claus
 

Times

Bekanntes Mitglied
1. Ich habe einen Spediteur, einen Kunden und einen Rechnungsempfänger welche alle zB in einem Lieferschein erfasst werden.
Der Spediteur, der Kunde und der Rechnungsempfänger sind alles Adressen welche alle dieselben Grunddaten haben (Adressen wie: Name, Strasse, PLZ, Ort etc....).
Dazu gibt es eine Adressen-Tabelle. Über Checkboxen kann im Programm festgelegt werden was diese Adresse ist: Kunde, Spediteur, Rechnungsempfänger .. wobei eine Adresse auch alles drei sein KANN!

2. Im Lieferschein gibt es also 3 Spalten für einen Foreign-Key welcher sich immer auf dieselbe Adress-Tabelle bezieht.

3. Um nun für beispielsweise einen Lieferscheinausdruck alle Daten (Name, Strasse, PLZ, Ort etc....) von jeweils dem Spediteur, Rechnungsempfänger und Kunden ansprechen zu können mache ich 3 Joins auf dieselbe Tabelle, gebe aber den gejointen Tabellen einen Alias-Namen (Kunde, RechEmpf, Spediteur) - siehe SQL-Statement im 1. Beitrag!
An dieser Stelle alles kein Problem.

4. Mithilfe einer dynamischen Tabellenansicht (je nachdem was der Kunde gerade dargestellt haben möchte) kann er über eine Auswahl die gewünschte Spalte einstellen.. die Spalten die zur Verfügung stehen werden in einem Dropdown dargestellt.
Das Problem ist nun das ich um die Felder Name für Rechnungsempfänger, Spediteur und Kunde jeweils den Alias-Tabellen Namen brauche um die Felder anzusprechen damit es wie folgt aussieht:

Beispiel:
-RechEmpf.Name
-RechEmpf.Strasse
...
-Spediteur.Name
-Spediteur.Strasse
...
etc.


Momentan sieht es aber so aus:
-Adresse.Name
-Adresse.Strasse
....
-Adresse.Name
-Adresse.Strasse
...
etc.

Die verfügbaren Spaltennamen ermittle ich mir anhand einer For-Schleife welche über die ResultSetMetaData iteriert
mit der Methode:
Java:
this.rsMeta.getColumnLabel(col+1)

Nun brauch ich aber noch den Alias-Tabellen Namen um auch das richige Feld anzusprechen... aber die Methode
Java:
rsMeta.getTableName(col+1)
liefert mir nur den Original-Tabellen Namen (Adresse) und nicht dne von mir vergebenen Alias-Tabellen Namen!
 

Thallius

Top Contributor
Das kannst du aber auch nicht ändern. die sql Funktion getTableName(s) hat ja nichts mit einem Query zu tun. Die gibt halt einfach nur die in der Datenbank vorhandenen Tabellen zurück mehr nicht. Die weiß nichts von irgendwelchen Alias.

Irgendwie ist mir deine Logik auch immer noch zu hoch. Wenn alle drei Adresstypen (Lieferant, Spediteur, Wmpfänger) in der gleichen Tabelle stehen, dann haben sie ja auch alle die gleichen Spalten. Also kannst du doch einfach 3x diese Spalten dem User zum Auswählen anbieten. Beim Query ignoriest du diese Auswahl einfach. Ob Du da jetzt ein paar mehr einträge ausliest oder nicht sollte egal sein und beim Anzeigen nimmst du dann nur die Spalten die der User ausgewählt hat.

Gruß

Claus
 

Times

Bekanntes Mitglied
Die weiß nichts von irgendwelchen Alias.

Und genau da liegt das Problem... das ResultSetMetaData weiss nämlich den Alias (kann man im Debug-Modus sehen), gibt aber (noch) keine Methode um den abzurufen.
Ginge das vielleicht über Reflection irgendwie? Hab mich damit noch nicht wirklich viel auseinandergesetzt..
aber hab ich damit die Möglichkeit an ein privates Attribut eines bestehenden Objektes zu gelangen?

Lg Times
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
M Sql Tabellen erstellen Datenbankprogrammierung 3
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
C Mapping mit Annotations von 2 Tabellen Datenbankprogrammierung 22
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
feinperligekohlensaeure MySQL Dynamische Tabellen. Wie kann man es besser machen? Datenbankprogrammierung 3
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
D Count(*) auf 2 Tabellen anwenden Datenbankprogrammierung 7
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
V SQLite 2 Tabellen vergleichen und nur Unterschiedliche Sätze rausgeben. Datenbankprogrammierung 31
F Tabellen verbinden Datenbankprogrammierung 13
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
D umschalten zwischen verschiedene Tabellen Datenbankprogrammierung 1
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
T Ähnliche Wrapperklassen + DB-Tabellen Datenbankprogrammierung 1
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
J Tabellen in Tabellen finden Datenbankprogrammierung 4
S versionierte Tabellen Datenbankprogrammierung 2
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
E Tabellen nacheinander auslesen Datenbankprogrammierung 10
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
K SQL tabellen auswahl in jfreechart Datenbankprogrammierung 2
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
H Fortlaufende Nummerierung innerhalb mehrerer Tabellen Datenbankprogrammierung 4
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
F Einzelne Sql- Tabellen sichern (lokal) Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
Guybrush Threepwood Nachträgliches Ändern von Variableneigenschaften in (gefüllten) Tabellen Datenbankprogrammierung 3
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
A Datenbankzugriffe, mehr Tabellen Datenbankprogrammierung 12
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
X Abfrage über 2 Tabellen mit Tücken Datenbankprogrammierung 3
G verbindung 2er Tabellen Datenbankprogrammierung 3
M Auswerten über drei Tabellen Datenbankprogrammierung 2
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
M insert in 2 tabellen Datenbankprogrammierung 7
MQue Metadaten für Tabellen in der Datenbank Datenbankprogrammierung 5
D aus mehreren sql tabellen matchen und sortieren Datenbankprogrammierung 6
G 2 Tabellen zusammenfügen wie? Datenbankprogrammierung 8
G Tabellen-Dokument als Datenbank Datenbankprogrammierung 2
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
ARadauer tabellen kommentar ausgeben Datenbankprogrammierung 2
S Mysql abfrage über 2 tabellen. Datenbankprogrammierung 10
Y Hibernate - Werte aus 2 Tabellen laden Datenbankprogrammierung 29
S Postgres und die Ursprungstabelle bei vererbten Tabellen Datenbankprogrammierung 4
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3

Ähnliche Java Themen


Oben