我需要从关联的数据库中提取关联的名称及其最后支付的份额,但经过一天的尝试,我根本无法提取该数据。
senhas 表代表股份,associados 表代表关联数据,而 senhas_associados 代表关联方支付的股份,因为它是多对多关系。
为了对此进行查询,我试图查询具有最大 id (senha) 的共享,该共享位于 senhas_associados 中的 seassoc_senha_id 中,代表付费共享。
这是我到目前为止所尝试的:
首先,我试过这个语句,输出是必需的,但它没有显示没有支付任何所需份额的员工(在 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