2016-03-28 8 views
0

JOINを使用して、フレンドテーブルのデータに基づいて、各ペアの名前を表示する必要があります。 My output should come exactly like this 私はここ複数の結合を使用してSQLに値を表示する方法

以下の私の予想結果の画像は私のコードで接続している:

CREATE TABLE persons (
id INTEGER PRIMARY KEY AUTOINCREMENT, 
fullname TEXT, 
age INTEGER); 

INSERT INTO persons (fullname, age) VALUES ("Bobby McBobbyFace", "12"); 
INSERT INTO persons (fullname, age) VALUES ("Lucy BoBucie", "25"); 
INSERT INTO persons (fullname, age) VALUES ("Banana FoFanna", "14"); 
INSERT INTO persons (fullname, age) VALUES ("Shish Kabob", "20"); 
INSERT INTO persons (fullname, age) VALUES ("Fluffy Sparkles", "8"); 

CREATE table hobbies (
id INTEGER PRIMARY KEY AUTOINCREMENT, 
person_id INTEGER, 
name TEXT); 

INSERT INTO hobbies (person_id, name) VALUES (1, "drawing"); 
INSERT INTO hobbies (person_id, name) VALUES (1, "coding"); 
INSERT INTO hobbies (person_id, name) VALUES (2, "dancing"); 
INSERT INTO hobbies (person_id, name) VALUES (2, "coding"); 
INSERT INTO hobbies (person_id, name) VALUES (3, "skating"); 
INSERT INTO hobbies (person_id, name) VALUES (3, "rowing"); 
INSERT INTO hobbies (person_id, name) VALUES (3, "drawing"); 
INSERT INTO hobbies (person_id, name) VALUES (4, "coding"); 
INSERT INTO hobbies (person_id, name) VALUES (4, "dilly-dallying"); 
INSERT INTO hobbies (person_id, name) VALUES (4, "meowing"); 

CREATE table friends (
id INTEGER PRIMARY KEY AUTOINCREMENT, 
person1_id INTEGER, 
person2_id INTEGER); 

INSERT INTO friends (person1_id, person2_id) 
VALUES (1, 4); 
INSERT INTO friends (person1_id, person2_id) 
VALUES (2, 3); 

答えて

1

は、だから、基本的にINNER JOINを必要とします:

SELECT t.fullname,s.fullname 
FROM persons t 
INNER JOIN friends f 
ON(t.id = f.person1_id) 
INNER JOIN persons s 
ON(f.person2_id = s.id) 
0

MySQLのクエリ

SELECT p1.fullname, p2.fullname 
FROM friends f 
JOIN persons p1 on f.person1_id = p1.id 
JOIN persons p2 on f.person2_id = p2.id 
関連する問題