如何仅从sql中的两个表中获取特定数据

时间:2019-05-04 16:10:39

标签: sql

我想联接两个表,并获取客户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。

1 个答案:

答案 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;