我正在尝试从两个不同的选择中创建一个表输出。 第一个:
select NAME
from PROVIDER_GROUP
where ID=(select GROUP_ID
from CUSTOMER_GROUP
where CUSTOMER_ID=(select CUSTOMER_ID
from CUSTOMER
where PHONE = 'MyNumber123'));
select PHONE
from CUSTOMER
where PHONE = "MyNumber123"
TABLES:
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ PROVIDER_GROUP │ │ CUSTOMER_GROUP │ │ Customer │
├─────────────────────┤ ├─────────────────────┤ ├─────────────────────┤
│ NAME │ │ GROUP_ID │ │ CUSTOMER_ID │
│ GROUP_ID │ │ CUSTOMER_ID │ │ PHONE │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
预期:
┌─────────────────────┬─────────────────────┐
│ PHONE │ NAME │
├─────────────────────┼─────────────────────┤
│ +12345678910 │ NameProviderGroup1 │
│ +12345678910 │ NameProviderGroup2 │
│ +12345678910 │ NameProviderGroup3 │
└─────────────────────┴─────────────────────┘
答案 0 :(得分:2)
我想我明白你现在在问什么。如果这样做,请告诉我。
SELECT C.PHONE
,PG.NAME
FROM PROVIDER_GROUP PG
JOIN CUSTOMER_GROUP CG ON CG.GROUP_ID = PG.GROUP_ID
JOIN CUSTOMER C ON C.CUSTOMER_ID = CG.CUSTOMER_ID
WHERE C.PHONE = 'MyNumber123'
您可能需要使用LEFT JOIN
,具体取决于您是否要查看CUSTOMER_GROUP
表中未附加客户电话号码的提供商组。
轶事,但CUSTOMER_GROUP
表是CUSTOMER
和PROVIDER_GROUP
表之间的中间人。这两个表之间是many-to-many
关系。联结表CUSTOMER_GROUP
定义了两者之间的关系。
另外,你的表格图非常好。