MySQL SELECT来自其他表的两条记录?

时间:2020-03-26 14:56:10

标签: mysql

注意:这与this question不同,因为我需要从另外两个记录中获取数据,而不是从另一个记录中获取两个字段!

MySQL newb。我有两个表,我想从两个表中获取数据,所以我有以下内容:

wp_bowling_fixtures

fixture_id | fixture_date | home_team_id | away_team_id
-----------+--------------+--------------+-------------
1          | 2017-12-12   | 1            | 2
2          | 2017-12-12   | 3            | 4
3          | 2017-12-12   | 5            | 6
4          | 2017-12-12   | 7            | 8
5          | 2017-12-12   | 9            | 10

wp_bowling_teams

team_id | name   | division | archived
--------+--------+----------+---------
1       | Team A | 1        | 0
2       | Team B | 1        | 0
3       | Team C | 2        | 1
4       | Team D | 2        | 0
5       | Team E | 3        | 0
6       | Team F | 3        | 0
7       | Team G | 4        | 0
8       | Team H | 4        | 1
9       | Team I | 4        | 0
10      | Team J | 4        | 0

我想要一个SELECT查询产生的结果:

fixture_id | fixture_date | home_team_id | home_team_name | home_team_archived | home_team_division | away_team_id | away_team_name | away_team_archived | away_team_division
-----------+--------------+--------------+----------------+--------------------+--------------------+--------------+----------------+--------------------+-------------------
1          | 2017-12-12   | 1            | Team A         | 0                  | 1                  | 2            | Team B         | 0                  | 1

我还希望按Fixture_date DESC,home_team_division ASC,home_team_name ASC排序。

希望如此。

TIA,

尼克。

3 个答案:

答案 0 :(得分:1)

选择f.fixture_id,f.fixture_date,h.team_id作为home_team_id,h.name作为home_team_name,h.archived作为home_team_archived,h.division作为home_team_division,a.team_id作为away_team_id,a.name作为away_team_name,a。从wp_bowling_fixtures f,wp_bowling_teams h,wp_bowling_teams a,wp_bowling_teams a存档为away_team_archived,a.div分组。 ;

工作。

答案 1 :(得分:0)

sql中的任何操作都不会阻止您两次连接表,但是如果这样做,则必须为它们加别名。

您正在寻找使用

的查询
fixtures f 
JOIN teams h ON f.home_team_id = h.team_id
JOIN teams a ON f.away_team_id = a.team_id

我给球队h(代表主队)和a(代表客队)的别名,这样我就可以区分他们了。尽力填写

答案 2 :(得分:0)

select x.fixture_id, x.fixture_date, x.home_team_id, x.home_team_name, x.home_team_archived, x.home_team_division,
y.away_team_id, y.away_team_name, y.away_team_archived, y.away_team_division from
(select a.fixture_id, a.fixture_date, a.home_team_id, b.name home_team_name, b.archived home_team_archived, b.division home_team_division
 from wp_bowling_fixtures a inner join wp_bowling_teams b on A.home_team_id = B.team_id) x
 inner join  
 (select a.fixture_id, a.fixture_date, a.away_team_id, b.name away_team_name, b.archived away_team_archived, b.division away_team_division
 from wp_bowling_fixtures a inner join wp_bowling_teams b on A.away_team_id = B.team_id) y on x.fixture_id = y.fixture_id
 order by x.fixture_date desc, home_team_division asc, home_team_name asc;`enter code here`