我想联接两个表,并获取客户ID和从分支机构编号101租用设备编号1的客户的名称,但是每次我编写代码时,输出都会为我提供具有正确客户ID的所有名称,我只需要出现两个名字即可。有人可以帮忙吗?为什么条件不适用
select client_id, name
from hiring_agreement
join client on client.name = name and hiring_agreement.client_id = client_id
where branch_number =101 and equipment_number = 1;
select client_id, name
from hiring_agreement, client
where equipment_number = 1 and branch_number =101
order by client_id;
我希望得到两个名称和两个客户端ID,但是我有12个名称和12个客户端ID。
答案 0 :(得分:0)
问题是您没有用表名或别名来限定所有列名。
使用此方法:
select c.client_id, c.name
from client c inner join hiring_agreement h
on h.name = c.name and h.client_id = c.client_id
where h.branch_number = 101 and h.equipment_number = 1;
但是通常,客户的名称不存储在交易表中,并且在表name
中没有客户的hiring_agreement
列,因此也许可以使用:
select c.client_id, c.name
from client c inner join hiring_agreement h
on h.client_id = c.client_id
where h.branch_number = 101 and h.equipment_number = 1;
是否存在clients
表内的客户id列具有类似id
而不是client_id
的名称的情况?如果是这样,请更改为此:
select c.id, c.name
from client c inner join hiring_agreement h
on h.client_id = c.id
where h.branch_number = 101 and h.equipment_number = 1;