2013-04-27 62 views
0

我需要從一個關聯的數據庫中提取關聯的名稱和最後一個付費共享,但經過一天的嘗試,我根本無法提取該數據。最大左加入微軟sql服務器

表senhas代表股份,表associados相關數據和senhas_associados,代表一個員工支付的股份,因爲這是一個多對多的關係。

爲了查詢這個,我試圖用senhas_associados中代表付費份額的seassoc_senha_id中的最大id(senha)查詢共享。

這裏是我試過到目前爲止:

首先,我已經試過這種說法,是所需的輸出,但它並沒有顯示誰沒有支付其所需的任何應占聯營公司(在senhas_associados沒有記錄):

SELECT assoc_nome, senha_desig 
FROM associados, senhas, senhas_associados 
WHERE assoc_id = seassoc_assoc_id 
AND seassoc_senha_id = senha_id 
AND seassoc_senha_id IN (SELECT max(seassoc_senha_id) 
FROM senhas, senhas_associados 
WHERE seassoc_senha_id = senha_id 
AND seassoc_assoc_id = assoc_id) 

輸出:

assoc_nome | senha_desig 
------------------------------ 
Carlos Costa | Maio 
Rodrigo  | Abril 

我甚至嘗試添加此:

SELECT assoc_nome, senha_desig 
FROM associados, senhas, senhas_associados 
WHERE assoc_id = seassoc_assoc_id 
AND seassoc_senha_id = senha_id 
AND seassoc_senha_id IN (SELECT max(seassoc_senha_id) 
FROM senhas, senhas_associados 
WHERE seassoc_senha_id = senha_id 
AND seassoc_assoc_id = assoc_id) OR senha_desig is null 

無濟於事,輸出是一樣的。

然後,我已經改變了「戰術」,前往左的連接:

SELECT assoc_nome, senha_desig 
FROM associados 
LEFT JOIN senhas_associados ON associados.assoc_id = senhas_associados.seassoc_assoc_id 
LEFT JOIN senhas ON senhas.senha_id = senhas_associados.seassoc_senha_id 

輸出:

assoc_nome | senha_desig 
-------------------------  
Carlos Costa | Abril 
Carlos Costa | Janeiro 
Carlos Costa | Fevereiro 
Carlos Costa | Maio 
Rodrigo  | Janeiro 
Rodrigo  | Fevereiro 
Rodrigo  | Abril 
Pedro Soares | NULL 

現在它顯示空的,但我找不到放在哪裏最大功能。

所以我請求你的幫助,因爲今天的下午,我堅持這一點。

謝謝大家,

問候。

下面是相關表的關係模型:http://i44.tinypic.com/30aykv8.png

回答

0
SELECT max(senha_id),assoc_nome,senha_desig 
    FROM associados a 
    LEFT JOIN (senhas_associados sa 
      LEFT JOIN senhas s 
      on sa.senha_id = sa.seassoc_senha_id) 
    ON a.assoc_id = seassoc_assoc_id 
    GROUP BY assoc_nome,senha_desig 
+0

問題解決了。非常感謝理查德。只改變了sa到s。 – Digmoons 2013-04-27 02:07:05

+0

另外,有沒有辦法顯示senha_desig而不是senha_id? – Digmoons 2013-04-27 02:12:48