I';我在解决postgresql实习练习时遇到困难。使用两个不同的表

I';我在解决postgresql实习练习时遇到困难。使用两个不同的表,sql,postgresql,Sql,Postgresql,我申请了一个使用postgresql的实习,在几个月前刚开始的大学学习之前,我从未接触过编程语言。雇主给我发了一封电子邮件,里面有一些我周一前必须做的练习。我有三天的时间来学习这门语言和解决练习。我学习了一整天,大约14个小时(真的)。我已经习惯了postgresql,但有一件事我很挣扎。因为我对编程非常陌生,我没有足够的时间来做非常具体的搜索,所以我没有其他选择,只能向你们寻求帮助 问题出在这里。我在两个表上都有相同的“id\u cliente”列。我需要显示一个表格,其中显示所有人的姓名、身

我申请了一个使用postgresql的实习,在几个月前刚开始的大学学习之前,我从未接触过编程语言。雇主给我发了一封电子邮件,里面有一些我周一前必须做的练习。我有三天的时间来学习这门语言和解决练习。我学习了一整天,大约14个小时(真的)。我已经习惯了postgresql,但有一件事我很挣扎。因为我对编程非常陌生,我没有足够的时间来做非常具体的搜索,所以我没有其他选择,只能向你们寻求帮助

问题出在这里。我在两个表上都有相同的“id\u cliente”列。我需要显示一个表格,其中显示所有人的姓名、身份证以及每个人从租赁公司借了多少部电影

我尝试了两种不同的代码,但都不起作用

select en_cliente.id_cliente, nome, count(en_aluguel.id_cliente) as alugueis
from en_cliente, en_aluguel
where en_cliente.id_cliente=en_aluguel.id_cliente
group by en_cliente.id_cliente;
这使得玛丽亚失踪了(因为她的身份证没有显示在第一张桌子上,应该显示零)

此外:

这使得最后一列(id为alugueis)的每个值都是“7”

第一个表:

第二张表:

第三张表:
有两件事:

  • 每当FROM行中有两个表时,您都在进行内部联接,这要求两个表上的行都匹配
  • 每当WHERE子句中有条件时,只会返回与之匹配的行,这同样会限制您在两个表中都有包含该子句的记录
  • 您需要左连接,这允许您从存在的记录转到可能存在或不存在的记录

    尝试一下。它将从您的en_cliente表开始,并将加入en_aluguel表中的记录,即使en_aluguel中没有匹配项

    select en_cliente.id_cliente, nome, count(en_aluguel.id_cliente) as alugueis
    from en_cliente
    left join en_aluguel on (en_cliente.id_cliente=en_aluguel.id_cliente)
    group by en_cliente.id_cliente;
    

    注意:如果您将我的示例中的单词“left”改为“inner”,您将得到完全相同的代码(只是不同的语法)作为你的第一个例子。

    嗨,乔纳斯,这里所有关于你在生活和困难中的职位的文字都是不受欢迎的。这被认为是噪音。与你未来的雇主谈谈你的问题,以解决这项任务-如果他没有给你足够的时间在工作中学习你在填补这个职位时需要知道的东西,你在那里不会感到高兴。你可能会如果想提供SQL问题,请考虑提供一个已经填充了表格和数据的SQL小提琴。
    select en_cliente.id_cliente, nome, count(en_aluguel.id_cliente) as alugueis
    from en_cliente
    left join en_aluguel on (en_cliente.id_cliente=en_aluguel.id_cliente)
    group by en_cliente.id_cliente;