2017-04-21 16 views
2

ユーザーが自分のJavaアプリケーションにログインするときに、友達リストを作成しようとしています。 私はUSERS、FRIENDS、SONGSという3つのテーブルを持っています。複数のSQLテーブルを結合する

ユーザテーブル:

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

友人テーブル(USERテーブルのID = 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は全く異なる2つの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

関連する問題