2017-04-21 44 views
2

我试图创建好友列表中,当用户登录到我的Java应用程序。 我有3个表,用户,朋友和歌曲。组合多个SQL表

用户表:

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

的朋友表(ID = user表中的ID)

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

歌曲表(再次ID = USER)

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

那么什么我需要做的是,当用户登录时,从朋友表中选择所有的朋友,获取有关这些信息的所有信息朋友,并选择属于该朋友的每首歌曲。

目前我有一些sql将正确选择朋友和他们的信息,但我无法设法结合这与获取歌曲。
理想我想通过循环获取每个用户的详细信息(包括一个ArrayList的歌曲),然后创建用户对象的数组。

SQL我用得到的朋友:。

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 = ? 

=谁在注销用户

+0

MySQL和SQL Server的是两个完全不同的DBMS。你已经在标签中提到过 - 但是你到底在用什么?关于你的任务 - 它看起来像你需要了解在SQL'join'操作 - 那么你会很容易地实现自己的目标。 –

回答

1

你应该使用JOINs这样的:

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

用户,朋友,歌曲是你的表名。

为什么LEFT JOIN?因为你不想删除没有任何朋友的用户,或者没有任何歌曲的朋友。

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

请编辑您的答案以包含一些解释。仅有代码的答案对未来SO读者的教育很少。您的回答是在低质量的审核队列中。 – mickmackusa