我有三个表:T1fromT2(client)和T3(供应商),它也充当黑名单T1:与行客户和供应商的id。
- 我想获得供应商的id客户端可以从
.
目前T1有三行:
T1_id | T2_id | T3_id
1 1 3
2 1 4
3 2 3
我试着:
select T3.id
from T1
left join T2 on T2.id = T1.T2_id
right join T3 on T3.id != T1.T3_id
where T2.id = 1
输出为:
1
2
3
1
2
4
应该只有1和2。我错过了什么?它在T2下工作得很好。Id = 2.
你也可以这样做
select T3.id from T1, T2, T3
where
T1.T2_id = T2.id and
T3.id <> T1.T3_id and
T2.id = 1
我希望这对你有帮助
所以你有
- 客户端列表
- 供应商名单
- 客户和供应商之间的地图。
这应该是你的表格布局。
clients
---------
client_id [PK]
client_label
suppliers
---------
supplier_id [PK]
supplier_label
client_suppliers
----------------
client_supplier_id [PK]
client_id
supplier_id
然后您只需选择哪些供应商映射到特定的客户。
SELECT
supplier_id
, supplier_label
FROM
suppliers T1
INNER JOIN
client_suppliers T2 ON T2.supplier_id = T1.supplier_id
WHERE
T2.client_id = 1