mysql 在SQL查询中两次选择同一字段并两次连接到该字段

ecfdbz9o  于 2023-03-11  发布在  Mysql
关注(0)|答案(1)|浏览(148)

| 营销互动||
| - ------|- ------|
| 营销互动标识|1个|
| 组织标识|七十五|
| 联系人标识|十八|
| 内部人员标识|九十七|
| 描述|客户随访|
| 人|||
| - ------|- ------|- ------|
| 个人标识|十八|九十七|
| 名|约翰|亚当|
| 姓|史密斯|琼斯|
| 组织||
| - ------|- ------|
| 组织标识|七十五|
| 姓名|阿克米公司|
我正在编写一个查询以返回以下信息:
enter image description here
我无法让名字和姓氏字段显示在internal_person_id字段之后。marketing_interaction表有两个字段需要引用person表。我只能让它与person表联接一次,即使我尝试使用别名。我还尝试了完全外部联接,但在MySQL上它们不起作用。

SELECT marketing_interaction.marketing_interaction_id, 
 marketing_interaction.organization_id, 
 organization.name, 
 marketing_interaction.contact_id, 
 person.first_name, 
 person.last_name, 
 marketing_interaction.internal_person_id, 
 p.first_name, 
 p.last_name, 
 marketing_interaction.description
FROM marketing_interaction
JOIN organization 
  ON marketing_interaction.organization_id=organization.organization_id
JOIN person 
  ON marketing_interaction.contact_id=person.person_id
JOIN person AS p 
  ON marketing_interaction.internal_person_id=p.person_id
3ks5zfa0

3ks5zfa01#

有用提示:为所有表设置别名,以使代码更易于阅读。此外,您试图返回多个同名列,这可能是一个问题。**为结果中的列名设置别名,以避免该问题。**可能您使用的IDE不喜欢重复的列名,这会给您带来问题。
你就差一点就说对了。

create table marketing_interaction (
  marketing_interaction_id integer, 
  organization_id integer, 
  contact_id integer, 
  internal_person_id integer, 
  description varchar(50)
  );
  
insert into marketing_interaction values 
(1, 75, 18, 97, 'follow up with client');

create table person (
  person_id integer, 
  first_name varchar(20), 
  last_name varchar(20)
  );
  
insert into person values 
(18, 'John', 'Smith'), 
(97, 'Adam', 'Jones');

create table organization (
  organization_id integer, 
  name varchar(20)
  );
  
insert into organization values 
(75, 'acme corp');
select mi.marketing_interaction_id, 
 mi.organization_id, 
 o.name as org_name, 
 mi.contact_id, 
 p1.first_name as contact_first_name, 
 p1.last_name as contact_last_name, 
 mi.internal_person_id, 
 p2.first_name as internal_first_name, 
 p2.last_name as internal_last_name, 
 mi.description
from marketing_interaction mi
join organization o
  on mi.organization_id = o.organization_id
join person p1
  on mi.contact_id = p1.person_id
join person p2
  on mi.internal_person_id = p2.person_id;

| 营销互动标识|组织标识|组织名称|联系人标识|联系人名字|联系人姓氏|内部人员标识|内部名字|内部姓氏|描述|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 1个|七十五|阿克梅公司|十八|约翰|史密斯|九十七|亚当|琼斯|跟进客户|
fiddle

相关问题