2017-10-09 262 views
0

我有三张表:医院,检查和问题。医院可以有零或更多的检查。检查可能有零个或多个问题。我需要得到一张表格,其中包含与医院有关的所有违规行为以及日期。表看起来像:MySQL右连接两张表

Business Table b 
---------------------------- 
|id|name|address|city|state| 

Inspection Table i 
--------------------- 
|id|business_id|date| 

Issue Table v 
----------------------------------- 
|id|business_id|inspection_id|desc| 

我需要什么,由i.date desc命令是:

Query result 
-------------------------------- 
|b.name|b.address|i.date|v.desc| 

会有每检查一个以上的问题,所以我需要一排具有与上述相同。这就是我所得到的结果,但即使在不同的日期观察到最新的检查数据,也会为每个问题返回。

以下是我为我的查询:

SELECT b.business_name AS Name, b.address, b.city, b.state, i.date, v.desc 
FROM business_table AS b 
RIGHT JOIN inspection_table i ON i.business_id = b.id 
RIGHT JOIN issue_table v ON v.inspection_id = i.id 
ORDER BY i.date DESC 
+1

你真的想'JOIN'或'左JOIN',不'RIGHT'! –

+1

尝试左连接而不是那些正确连接 –

回答

0

试试这个

SELECT b.business_name AS Name, b.address, b.city, b.state, i.date, v.desc 
FROM issue_table v 
LEFT JOIN inspection_table i ON i.id = v.inspection_id 
LEFT JOIN business_table AS b ON v.business_id = b.id 
ORDER BY v.business_id, i.date DESC 
+0

抱歉所有编辑 –