我有供应商表(身份证,姓名,地址)
我有另一个表格将供应商与客户联系起来(accredited_suppliers-> supplier_id,customer_id)
我想选择所有供应商,其标识符显示是否与客户有关系(customer_id)
即。结果看起来像:
供应商:
id, name, address, customer_link
1, name1, address1, null
2, name2, address2, Yes
3, name3, address3, null
4, name4, address4, Yes
更多信息:
供应商表: ID 名称 ... ...
客户表: ID 名称 ... ...
AccreditedSuppliers表: ID 顾客ID 供应商ID
e.g。我想要所有供应商,列标记所有与客户ID = 100
相关联的供应商答案 0 :(得分:2)
SELECT t1.*, IF(count(`t2`.`customer_id`) > 0, 'yes', NULL) as customer_link
FROM `suppliers` AS `t1`
LEFT JOIN `accredited_suppliers` AS `t2` ON `t2`.`supplier_id` = `t1`.`id`
答案 1 :(得分:0)
您要么找一个有客户的供应商列表
SELECT * FROM suppliers WHERE supplier_id IN ( SELECT supplier_id FROM customers );
或者您希望有一个连接,取决于关系船的工作方式,您需要确定您想要的连接类型,例如关系1-1,1-m,nm?
答案 2 :(得分:0)
SELECT id, name, address, customer_id as customer_link FROM suppliers LEFT JOIN accredited_suppliers ON suppliers.id=accredited_suppliers.supplier_id
答案 3 :(得分:0)
希望这应该有用 -
select id, name, address,
(case when exists(select 'x' from linkedtable where id in (supplier_id))
then 'Yes' else null end) as customer_link
from suppliers