2017-09-16 76 views
1

我需要做一个MySQl查询来从数据库中的多个表中获取数据,并且我一直在尝试,但似乎无法做到正确。下面是我的表格和我想要的例子。MySQL与四个表(比赛和结果表)的多个表连接

的数据库表:汽车的

+-------------------+ 
|  Car  | 
+-------------------+ 
| Car_ID (Int)  | 
| Car_Name (String) | 
+-------------------+ 

例子:

Car_ID: 1 
Car_Name: BMW M3 

+-------------------+ 
|  Race  | 
+-------------------+ 
| Race_ID (Int)  | 
| Race_Car1 (Int) | 
| Race_Car2 (Int) | 
| Race_Number (Int) | 
+-------------------+ 

种族的例子:

Race_ID: 11 
Race_Car1: 3 
Race_Car2: 2 
Race_Number: 6 

+-------------------+ 
|  Result  | 
+-------------------+ 
| Result_ID (Int) | 
| Result_Number (Int)| 
| Result_Result (Int)| 
+-------------------+ 

结果的示例:

Result_ID: 1 
Result_Number: 6 
Result_Result: 2 

+-------------------+ 
| ResultType  | 
+-------------------+ 
| ResultType_ID (Int)| 
| ResultType_Name (String)| 
+-------------------+ 
01与resultType的

例子:

ResultType_ID: 1 
ResultType_Name: Car1 Win 

我想将加入汽车表种族表Race_Car1和Race_Car2领域的查询,然后将结果从结果表Result_Number必须与Race_Number领域,也可加入Result_Type必须连接到Result_Result字段中。

基本上我想这样的结果:

Race_Car1 Race_Car2 Result_Result Race_Number 
BMW M3 | Ford Focus RS | Car1 Win | 6 
+1

请显示您的代码 – scaisEdge

回答

0

你可以使用一个自连接为加盟车moltiple时间

在我的答案我展示胜者的车名,而不是CAR 1或CAR2

select a.car_name car_1, b.car_name car_2, c.car_name winner, d.race_nymber 
    from race d 
    inner join car a on a.car_ID = d.race_car_1 
    inner join car b on b.car_ID = d.race_car_2 
    inner join result t on t.Result_Number = d.Result_Number 
    inner join car c on c.car_ID = t.Result_Result 
+0

非常感谢。这正是我所期待的。 –