[SQL] Doppelter Join aus der selben Tabelle & Feldnnamen

Status
Nicht offen für weitere Antworten.
T

theomega

Gast
Hallo Leute,
ich habe folgende Sitiuation:
1. Tabelle "data"
- dataid (Index, AUTO_INCREMENT)
- editorid (Index)
- creatorid (Index)

2. Tabelle "user"
- userid (Index, AUTO_INCREMENT)
- username (VARCHAR)
- userposts
- einige (ca. 20 weitere Felder)


Ich will jetzt alle Einträge aus der Data-Tabelle auslesen. Dabei ist editorid die ID des User der den Eintrag bearbeitet hat und creatorid die ID des User der den Eintrag erstellt hat. Mein Ansatz mit einem Doppelten LEFT Join geht auch
Code:
SELECT * FROM data 
LEFT JOIN user AS creator ON (creator.userid=data.creatorid)
LEFT JOIN user AS editor ON (editor.userid=data.editorid)

Das Problem ist jetzt: Wenn ich dann mit JDBC versuche das Feld "username" auszulesen weiß Java natürlich nicht ob ich jetzt den creator oder den editor meine. Wie komm ich jetzt getrennt an die daten der Benutzer hin?

Der Einzige Ansatz der mir bekannt ist:
Ich muss das Query so verändern:
Code:
SELECT data.*, creator.userid AS creatoruserid, creator.userposts AS creatoruserpost,creator.username AS creatorusername, [....], editor.userid AS editoruserid, editor.userposts AS editoruserposts
LEFT JOIN user AS creator ON (creator.userid=data.creatorid)
LEFT JOIN user AS editor ON (editor.userid=data.editorid)

Das ist aber extrem unhandlich, vor allem: Jedesmal wenn ich ein neues Feld in die user-tabelle einfüge muss ich das Query neu anpassen. Nachdem die Tabelle über 20 Felder enthält wird das Query auch extrem unhandlich.

Welche Alternativen gibt es?

Datenbank-Server ist MySQL ich würde aber Wert auf eine allgemein-gültige Löung legen.

Gruß
TO
 
G

Guest

Gast
Keine Ahnung, was dabei rauskommen soll, aber versuche das hier ;)
Code:
SELECT userid, username, userposts, IF(creatorid,1,0) AS is_creator
FROM data, user
WHERE (editorid IS NOT NULL AND userid=editorid)
   OR (creatorid IS NOT NULL AND userid=creatorid)
IF(creatorid,1,0) liefert 1, wenn creatorid != NULL ist, sonst 0. Danach kannst du die unterscheiden.
 

SamHotte

Top Contributor
Ich kapier nicht ganz, wozu du 2 JOINs machen möchtest - normal langt einer, wenn du 2 Tabellen verbindest. Den Rest würde ich über eine geeignete WHERE-Anweisung erledigen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kotelettklopfer SQLite Verhindern von doppelter Statement Ausführung Datenbankprogrammierung 25
J SQL-Abfrage zur löschung doppelter Datensätze Datenbankprogrammierung 7
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
D Left Join mit Wioth Rollup Datenbankprogrammierung 0
S MySQL ehemaliger FULL OUTER JOIN zusammenstellen Datenbankprogrammierung 1
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
A Fehlermeldung: JOIN FETCH expressions cannot be defined with an identification variable Datenbankprogrammierung 0
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
S SQL join - NullPointerExeption Datenbankprogrammierung 3
E Mehrere Tabellenspalten mit INNER JOIN verknüpfen Datenbankprogrammierung 1
OnDemand LEFT JOIN id hat Null Datenbankprogrammierung 6
ruutaiokwu reihenfolge der operanden bei join's Datenbankprogrammierung 5
G SQLite Self Join "unbestimmter tiefe" Datenbankprogrammierung 7
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
Kenan89 Datenbank Join Datenbankprogrammierung 16
M JPQL - Join Verkettung Datenbankprogrammierung 8
K SQL Inner Join - On Klausel Datenbankprogrammierung 10
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
kirchrath Hibernate Join - angejointes Objekt wählen Datenbankprogrammierung 2
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
G Join Abfrage Datenbankprogrammierung 12
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
T MySQL: Join auf sich selbst schlägt fehlt Datenbankprogrammierung 3
MQue Join n:m Datenbankprogrammierung 9
0x7F800000 MS-SQL Server 2008 Wie benutzt man da NATURAL JOIN / INNER JOIN USING? Datenbankprogrammierung 3
D join updaten in java Datenbankprogrammierung 4
G [Hibernate] Problem mit LEFT JOIN Datenbankprogrammierung 7
S Preparestatement mit join Datenbankprogrammierung 4
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
P Join Datenbankprogrammierung 4
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M Proble mit Selcet mit join und rst.next() Datenbankprogrammierung 15
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
E ERROR: argument of JOIN/ON must be type boolean? Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
E JOIN und * Datenbankprogrammierung 3
G Probleme mit Access und Join Datenbankprogrammierung 3
G PL/SQL: Join mit Collection Datenbankprogrammierung 5
S JOIN und wohin damit? Datenbankprogrammierung 5
R MySQL berechnete Spalte im selben query weiterverwenden? Datenbankprogrammierung 4
O eine Tabelle hat mehrere PrimKey mit dem selben Wert Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben