java - 合并多个 SQL 表

标签 java mysql sql-server netbeans derby

当用户登录到我的 Java 应用程序时,我正在尝试创建好友列表。 我有 3 个表,USERS、FRIENDS 和 SONGS。

用户表:

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

friend 表(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            |

所以我需要做的是当用户登录时,从 friend 表中选择他们所有的 friend ,获取这些 friend 的所有信息,并选择属于 friend 的每一首歌。

目前我有一些 sql 可以正确选择 friend 和他们的信息,但是我无法将其与获取歌曲结合起来。
理想情况下,我想遍历获取每个用户的详细信息(包括数组列表中的歌曲),然后创建一个用户对象数组。

我用来获取 friend 的 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 = ?

?= 登录的用户。

最佳答案

你应该使用 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 = ?

用户、 friend 和歌曲是您的表名。

为什么左连接?因为您不想删除没有任何 friend 的用户,或没有任何歌曲的 friend 。

关于java - 合并多个 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541500/

相关文章:

java - 进度对话框显示在错误的 fragment 中,并且在滑动选项卡时无法传递数据

java - Java 套接字是否支持全双工?

mysql - 表格优化

sql - SQL Server 中的聚合函数

sql-server - 我收到此错误 : Only one expression can be specified in the select list when the subquery is not introduced with EXISTS

java - 以编程方式在 BigQuery 的数据集中创建表

java - 如何获取存储在 HashMap 中的列表中的对象,以创建新列表

MySQL xpath 连接运算符,如何添加空格?

mysql - 如何借助mysql中的sql事务id查找进程id

sql - 外键到非主键