SQL以限制1连接多个表
我有三张桌子:SQL以限制1连接多个表,sql,postgresql,join,Sql,Postgresql,Join,我有三张桌子: **clientes** cli_clientes nome 50 A 52 B **telefones_cliente** cli_cliente tel_telefone 50 387 50 386 50 385 52 400 **telefones** tel_telefone tel_contato 385 RODOLFO - COMPR
**clientes**
cli_clientes nome
50 A
52 B
**telefones_cliente**
cli_cliente tel_telefone
50 387
50 386
50 385
52 400
**telefones**
tel_telefone tel_contato
385 RODOLFO - COMPRAS
386 SONIA CONTAS A PAGAR RAMAL 201
387 VANESSA CONTABILIDADE RAMAL 202
388 (null)
389 (null)
我需要客户的结果,只需要telefones_客户的第一次匹配,再加上telefones的tel_contato。
我只是做了很多尝试,所以我需要帮助,我最后一个不工作的SQL:
SELECT
c.cli_cliente
,cli_razao_social,
tc.tel_telefone
-- ,telefones.tel_contato
FROM
clientes c
JOIN telefones_cliente tc ON c.cli_cliente = (SELECT tc.cli_cliente FROM telefones_cliente, clientes c2, telefones t WHERE c2.cli_cliente=tc.cli_cliente AND tc.tel_telefone=t.tel_telefone LIMIT 1)
我得到的是:
cli_cliente cli_razao_social tel_telefone
50 EXACTA ENGENHARIA E ADMINISTRAÇAO LTDA 385
50 EXACTA ENGENHARIA E ADMINISTRAÇAO LTDA 386
50 EXACTA ENGENHARIA E ADMINISTRAÇAO LTDA 387
我需要的是:
cli_cliente cli_razao_social tel_telefone
49 WOOD FORM LTDA 384
50 EXACTA ENGENHARIA E ADMINISTRAÇAO LTDA 387
您可以使用分组方式,如下所示:
select clientes.cli_clients, nome , tel_telefone, tel_contato from clientes
inner join telefones_cliente on (clientes.cli_clientes =telefones_cliente.cli_cliente)
inner join telefones on (telefones_cliente.tel_telefone =telefones.tel_telefone)
group by clientes.cli_clients
它只为每个客户端返回一条记录使用“top 1”仅获取第一次出现的记录 试试这把SQL小提琴 这是我使用的查询。给出了预期的结果
select A.clientid,B.telephone,C.Name
from Client A inner join ClientTelephone B on A.clientid = B.clientid
inner join Telephone C on B.telephone = C.Telephone
limit 1
您当前的结果和预期的结果都包括名称、标识符,甚至是示例数据中没有的列名,这使得很难看到您试图说明的内容。这不起作用,这是我第一次尝试。Postgres要求“按客户分组。客户、电话号码。电话号码”在Postgres末尾使用限制1,而不是top1