mysql无法获取在查询中显示的空数据

mysql无法获取在查询中显示的空数据,mysql,null,Mysql,Null,以下是我需要实现的目标: person_id last_name first_name region_id region name 1 barnum phineas 1 maricopa 2 loman willy 2 pima

以下是我需要实现的目标:

person_id   last_name   first_name  region_id   region name                         
  1         barnum        phineas      1        maricopa                                    
  2         loman         willy        2        pima                                        
  2         loman         willy        3        pinal                                       
  2         loman         willy        4        santa cruz                                  
  3         kay           mary         5        cochise                                     
  3         kay           mary         6        gila                                        
  3         kay           mary         7        graham                                      
  4         lillian       vernon       NULL     NULL
这是我的桌子:

Create database sales
use sales

create table if not exists
  `Sales_People` 
    (`person_id` int primary key,
     `last_name` char(16) not null,
     `first_name` char(16) not null);

INSERT INTO Sales_people
    (`person_id`, `last_name`, `first_name`)
  values 
    ('1', 'barnum', 'phineas'),
    ('2', 'loman', 'willy'),
    ('3', 'kay', 'mary'),
    ('4', 'lillian', 'vernon');

create table if not exists
  `Sales_Region` 
    (`region_id` int primary key,
     `name` char(16) not null);

INSERT INTO Sales_Region
    (`region_id`, `name`)
  Values
    ('1', 'maricopa'),
    ('2', 'pima'),
    ('3', 'pinal'),
    ('4', 'santa cruz'),
    ('5', 'cochise'),
    ('6', 'gila'),
    ('7', 'graham');

create table if not exists
  `Sales_People_Region` 
    (`person_id` int not null,
     `region_id` int not null,
      constraint spr_pk primary key(person_id, region_id),
      constraint spr_fk1 foreign key(person_id) 
        references Sales_People(person_id),
      constraint spr_fk2 foreign key(region_id) 
        references Sales_Region(region_id));

INSERT INTO Sales_People_Region
    (`person_id`, `region_id`)
  Values
    ('1', '1'),
    ('2', '2'),
    ('2','3'),
    ('2', '4'),
    ('3', '5'),
    ('3', '6'),
    ('3','7');

create table if not exists
  `Sales`
    (`year` int not null,
     `month` int not null,
     `region_id` int not null,
     `amount_sold` decimal(11,2),
      constraint s_pk primary key(year, month, region_id),
      constraint s_fk foreign key(region_id)
        references Sales_Region(region_id));

INSERT INTO Sales
    (`year`, `month`, `region_id`, `amount_sold`)
  Values
    ('2016', '01', '1', '800000'),
    ('2016', '02', '1', '850000'),
    ('2016', '03', '1', '990000'),
    ('2016', '01', '2', '425000'),
    ('2016', '02', '2', '440000'),
    ('2016', '03', '2', '450000'),
    ('2016', '01', '3', '200000'),
    ('2016', '02', '3', '210000'),
    ('2016', '03', '3', '220000'),
    ('2016', '01', '4', '50000'),
    ('2016','02', '4', '52000'),
    ('2016', '03', '4', '55000'),
    ('2016', '01', '5', '40000'),
    ('2016', '02', '5', '41000'),
    ('2016', '03', '5', '42000'),
    ('2016', '01', '6', '3000'),
    ('2016', '02', '6', '31000'),
    ('2016','03', '6', '32000'),
    ('2016', '01', '7', '20000'),
    ('2016', '02', '7', '21000'),
    ('2016', '03', '7', '22000');
这是我的密码:

select sales_people.person_id, `last_name`, `first_name`, sales_region.Region_id, 
    trim(sales_region.`name`) AS 'Region Name'   
  from `sales_region` 
  inner join sales_people_region
    on sales_people_region.region_id = sales_region.region_id 
  inner join sales_people
    on sales_people_region.`person_id` = sales_people.`person_id`
  group by  sales_region.region_id, sales_people.person_id
    having sales_people.person_id >= ''
  order by sales_people.person_id, sales_region.region_id asc;
我得到的是:

person_id   last_name   first_name  Region_id   "Region Name"
1            barnum     phineas          1      maricopa
2             loman     willy            2      pima
2       loman       willy       3       pinal
2       loman       willy       4       "santa cruz"
3       kay         mary        5        cochise
3       kay         mary        6       gila
3       kay         mary        7       graham
我不能让它让我看到最后一个人的id,因为他们没有分配给他们的区域id。在表sales\u people\u region\u id是主键,因此不能为null


如果我按个人id查询销售人员和分组,她会出现

我认为外部连接可以解决这个问题。内部联接要求联接的每一侧至少存在一行;左侧外部联接将选择左侧表中的所有行,包括右侧表中没有匹配行的行。右外部联接是该联接的镜像,完全外部联接从两侧选择不匹配的行

请尝试以下查询:

SELECT sales_people.person_id, last_name, first_name, sales_region.Region_id, 
    TRIM(sales_region.`name`) AS 'Region Name'   
  FROM sales_people
  LEFT OUTER JOIN sales_people_region
    on sales_people.person_id = sales_people_region.person_id
  LEFT OUTER JOIN sales_region
    ON sales_people_region.region_id = sales_region.region_id 
  GROUP BY sales_region.region_id, sales_people.person_id
    HAVING sales_people.person_id != ''
  ORDER BY sales_people.person_id, sales_region.region_id ASC;