2016-05-17 9 views
0

Ich habe zwei Tabellen in meiner database.One Table_join genannt wird und es hat FelderJava SQL SELECT und Abfrage für Gruppen einfügen und Untergruppen

ID , NameOfObject,Address,Date 

Die zweite Tabelle Anschluss genannt wird, und es hat Felder:

ID,IDofGroup,IDofSubgroup. 

Wenn ich neuen Rekord bin Einfügen, kann es ohne eine Untergruppe ein Objekt sein, so etwas wie Object1 auf auf seinem eigenen, oder es kann ein Object2 und Object21 sein, dass eine Untergruppe von Object2 ist - in diesem Fall in die zweite Tabelle Connection Ich würde ID des Object2 in IDo einfügen fGroup und ID des Object21 in IDofSubgroup.

Ich möchte meine Tabelle durchsuchen, also zum Beispiel, wenn ich Object2 eintippe, in der Tabelle möchte ich Object2 und seine Adresse und sein Datum und Object21 und seine Datumsadresse sehen. Wenn ich inner join verwende, bekomme ich nur Object21 wenn ich Objekt2 suche, nicht Objekt2 selbst.

auch, wenn ich innere Join verwenden, bekomme ich nur ID von object21, ich muss auch den Namen bekommen.

Meine Auswahlabfrage ist

String query = "SELECT * from table_join INNER JOIN connection ON table_join.id = connection.id_IDofSubgroup WHERE NameOfObject=?"; 

Antwort

1

Sowohl Object2 und Object21 in der Table_join Tabelle gespeichert sind. Das bedeutet, dass Sie gleichzeitig zwei verschiedene Datensätze aus dieser Tabelle betrachten müssen. Das heißt, Sie brauchen diese Tabelle in der /JOIN Klausel zweimal.

Da Sie zwei Zeilen aus derselben Tabelle zur gleichen Zeit zurückgeben, kollidieren Ihre Spaltennamen, daher müssen Sie sie in der Abfrage umbenennen.

SELECT t1.ID   AS MainID 
    , t1.NameOfObject AS MainName 
    , t1.Address  AS MainAddress 
    , t1.Date   AS MainDate 
    , t2.ID   AS SubID 
    , t2.NameOfObject AS SubName 
    , t2.Address  AS SubAddress 
    , t2.Date   AS SubDate 
    FROM Table_join t1 
    JOIN Connection c ON c.IDofGroup = t1.ID 
    JOIN Table_join t2 ON t2.ID = c.IDofSubgroup 
WHERE t1.NameOfObject = ? 
+0

das gibt mir immer noch nur Object21, nicht Object2 auch wenn ich Object2 bei der Suche eingeben. Ich möchte in meinem Ergebnis Objekt2 und Objekt 21 sehen. Und in der Zeit werde ich Objekt22, Objekt23 haben. – nscott23