【发布时间】:2021-10-27 16:32:15
【问题描述】:
表 1
| ID | FirstName | LastNmae | city | Group | code |
|---|---|---|---|---|---|
| 11 | john | smith | abc | E | P |
| 21 | don | davis | def | E | P |
| 3 | vee | miller | ghi | Q | P |
| 6 | vee | miller | ghi | Q | P |
表 2
| ID | FirstName | LastNmae | city | Status | EmpName | Phone |
|---|---|---|---|---|---|---|
| 11 | john | smith | abc | U | Company 1 | 123 |
| 21 | don | davis | def | P | Company 2 | 456 |
| 3 | vee | miller | ghi | C | Company 3 | 789 |
| 4 | jim | jones | xyz | P | comapany4 | 001 |
我有上面提到的 2 张桌子。在这些条件下,我需要两个表的输出
对于表 1 条件是:
Group='E' AND code='P'
对于表 2 条件是:Status = 'U' OR Status = 'P'
对于输出所需的列是:
ID, FirstName, LastName, City, EmpName, Phone
由于列数不匹配,我无法使用 UNION。
期望的输出:
| ID | FirstName | LastNmae | city | EmpName | Phone |
|---|---|---|---|---|---|
| 11 | john | smith | abc | Company 1 | 123 |
| 21 | don | davis | def | Company 2 | 456 |
| 4 | jim | jones | xyz | comapany4 | 001 |
我怎样才能得到想要的输出。使用 UNION 我无法获得“EmpName”和“Phone”列。无论如何使用 JOIN 来获得所需的输出。
【问题讨论】:
-
这应该是一个简单的问题,但它比应有的难度更大,因为您尚未对数据进行规范化。您的表格的列显然在两个表格中几乎完全重叠。您应该问自己一个问题,为什么它首先在两个表中?通常像这样的数据被组织在一个
person表中,然后像个人到公司、个人到组、个人到状态的关系可以根据他们的需要在不同的表中与公司等的一对一、一对多或多对多关系。然后您的查询可以加入用户、组和状态