Max与左连接在microsoft sql server中

时间:2013-04-27 01:40:14

标签: sql sql-server

我需要从关联的数据库中提取关联者的名称及其最后支付的份额,但经过一天的尝试后,我根本无法提取该数据。

表senhas代表共享,表关联关联数据和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

现在它显示NULL,但我找不到放置max函数的位置。

所以我请求你的帮助,因为今天下午我坚持这个。

谢谢大家,

问候。

以下是相关表格的关系模型:http://i44.tinypic.com/30aykv8.png

1 个答案:

答案 0 :(得分: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
相关问题