题目分析

  • 首先,产品名称与订单号是1对多的关系,即一个产品可以对应多个订单;
  • 查询结果中,产品名称需要全部显示,订单号唯一;

方法一:

  • 如果采用左外连接,为保证产品名称全部显示,应将Products作为左表。
select prod_name, order_num
from Products p left join OrderItems o on p.prod_id=o.prod_id
order by prod_name;

方法二:

  • 如果采用右外连接,为保证产品名称全部显示,应将Products作为连接字段中右边的表。
select prod_name, order_num
from OrderItems o right join Products p on p.prod_id=o.prod_id
order by prod_name;
  • 因为prod_nameorder_num只在一个表里面存在,所以不需要指明属于哪个表来避免歧义。