2017-03-11 19 views
0

私は2つのテーブル、1つは "oficinas"と呼ばれ、もう1つは "registrovisitas"と呼ばれます。SQL LEFT JOINの構文

oficinasの列があります。idofi、OFI、アドレス
registrovisitasには列があります。idregistro、OFI、ユーザー、fechavista

私はアドレスが「ド」のようなものであるすべての値を選択するテーブル内のすべての情報を " oficinas "とそれに関連するmax(fechavisita)をofiの日付グループとして指定します。

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)は表示されません。何が間違っていますか?

テーブルの登録には、異なるユーザーが同じ日付に複数の登録をしている場合があります。私は選択する必要はありません。

+0

Sidenodeにofiでグループする必要があります: '左/ Right'は参加は暗黙的です「外部」が結合するので、キーワードは省略することができます。 – dognose

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry

答えて

0

あなたが外select句

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% 

に列ffgを追加するのを忘れます。また、内側のクエリ

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%