我有3个表:sports
,venues
和instructors
,它们都有id
和name
。而不是有3个单独的SELECT * FROM table
我想用单个查询获取结果,以便结果如下:
+----------+------------+----------+------------+---------------+-----------------+
| sport_id | sport_name | venue_id | venue_name | instructor_id | instructor_name |
+----------+------------+----------+------------+---------------+-----------------+
| 1 | Sport1 | 1 | Venue1 | 1 | Instructor1 |
| 2 | Sport2 | 2 | Venue2 | 2 | Instructor2 |
| 3 | Sport3 | | | 3 | Instructor3 |
| 4 | Sport4 | | | | |
+----------+------------+----------+------------+---------------+-----------------+
我试过
SELECT * FROM sports, venues, instructors
然而,有大量的重复。
编辑:3个表格之间没有任何关联。
答案 0 :(得分:2)
虽然我发现在一个查询中获取所有值的用途有限,但您总是可以使用UNION ALL
来获取所有值;
SELECT sport_id id, sport_name name, 'sport' type FROM sports
UNION ALL
SELECT venue_id id, venue_name name, 'venue' type FROM venues
UNION ALL
SELECT instructor_id id, instructor_name name, 'instructor' type FROM instructors
这将以格式提供输出;
id name type
-------------------------------
1 sport1 sport
2 sport2 sport
3 sport3 sport
4 sport4 sport
1 venue1 venue
2 venue2 venue
1 instructor1 instructor
2 instructor2 instructor
3 instructor3 instructor