2017-04-21 6 views
2

Ich versuche, eine Freundesliste zu erstellen, wenn ein Benutzer sich bei meinen Java-Anwendungen anmeldet. Ich habe 3 Tische, Benutzer, Freunde und Lieder.Kombinieren mehrerer SQL-Tabellen

Die Benutzertabelle:

ID| USERNAME | DOB  | 
:-| -------- | -------- | 
1 | Ted  |01/01/1990| 
2 | Jim  |02/03/1990| 
3 | Bill  |03/03/1990| 

Die Freund-Tabellen (ID = ID in USER Tabelle)

USER_ID| FRIEND_ID | 
:------| --------- | 
1  | 2   | 
2  | 1   | 
1  | 3   | 
3  | 1   | 

Songs Tabelle (wieder ID = USER)

ID| ARTIST | TITLE   | 
:-| --------- | ---------------- | 
2 | Queen  | We will rock you | 
2 | KISS  | Crazy nights  | 
2 | Aerosmith | Jaded   | 

Was Ich muss tun, wenn sich der Benutzer anmeldet, alle seine Freunde aus der Freundes-Tabelle auswählt, alle Informationen über diese bekommt Freunde, und wählen Sie auch jedes Lied des Freundes.

derzeit habe ich einige sql, die den Freund und ihre Informationen richtig auswählen, aber ich kann es nicht schaffen, dies mit dem Erzielen der Lieder zu kombinieren.
Idealerweise möchte ich die einzelnen Benutzerdetails (einschließlich der Songs in einer Arraylist) durchlaufen und dann ein Array des Benutzerobjekts erstellen.

SQL Ich bin mit den Freunden bekommen:?.

SELECT Username, DOB, POB FROM USERS WHERE ID in (SELECT FRIEND_ID FROM 
ADMIN1.FRIENDSHIPS Where USER_ID in (Select ID FROM USERS WHERE USERNAME = ? 

= der Benutzer, der sich anmeldet

+0

MySQL und SQL Server sind zwei völlig verschiedene DBMS. Sie haben beide in Tags erwähnt - aber was genau verwenden Sie? In Bezug auf Ihre Aufgabe - es sieht so aus, als müssten Sie etwas über 'Join'-Operationen in SQL lernen - dann werden Sie Ihr Ziel leicht erreichen. –

Antwort

1

Sie sollten JOINs wie folgt verwenden:

SELECT * FROM users 
LEFT JOIN friends ON friends.user_id = users.id 
LEFT JOIN songs ON songs.id = friends.friend_id 
WHERE users.id = ? 

Benutzer, Freunde und Lieder sind deine Tabellennamen.

Warum LINKS VERBINDEN? Weil Sie Benutzer nicht ohne Freunde oder Freunde ohne Lieder entfernen möchten.

0
select u.ID,f.FRIEND_ID,fsong.ARTIST 
    from user u 
inner join friend f on u.ID=f.USER_ID 
left join user fsong on fsong.ID= f.FRIENDID 
+1

Bitte bearbeiten Sie Ihre Antwort mit einigen Erklärungen. Code-only-Antworten machen wenig aus, um zukünftige SO-Leser zu schulen. Ihre Antwort befindet sich in der Moderationswarteschlange, weil sie von geringer Qualität ist. – mickmackusa

Verwandte Themen