SQL LEFT JOIN语法

时间:2017-03-11 17:28:12

标签: mysql

我有两张桌子,一张叫做“oficinas”,另一张叫做“registrovisitas”。

oficinas有专栏:idofi,ofi,地址
registrovisitas有专栏:idregistro,ofi,user,fechavista

我想选择地址就像“de”的所有值,其中“oficinas”表中的所有信息和相关的max(fechavisita)作为日期组byi。

SELECT a.ofi of, a.address dir

FROM oficinas a 
LEFT OUTER JOIN (SELECT ofi, max(fechavisita) ffg FROM registrovisitas ) b ON (a.ofi=b.ofi)

WHERE a.ofi LIKE %de%

但最大日期(fechavisita)没有出现,我做错了什么?

在registrovisitas表中,不同用户在不同日期的同一个oni上有多个注册表,我认为不是必须在select中进行分组吗?

2 个答案:

答案 0 :(得分:0)

您忘记将列ffg添加到外部选择子句

SELECT a.ofi of, a.address dir, ffg 
FROM oficinas a 
LEFT OUTER JOIN 
(
   SELECT ofi, max(fechavisita) ffg 
   FROM registrovisitas
   GROUP BY ofi
) b ON a.ofi = b.ofi
WHERE a.ofi LIKE %de%

您还需要在内部查询

中按ofi进行分组

答案 1 :(得分:0)

SELECT a.idofi, a.ofi, a.address dir, 
       (select max(fechavisita) from registrovisitas where ofi=A.idofi group by ofi)

FROM oficinas a 

WHERE a.ofi LIKE %de%