在右边的表中没有条目的联接

时间:2018-09-10 08:51:44

标签: mysql

我有3个表格的产品,版本和货币。

是否可以查询具有MAX版本但还没有任何货币的产品,其中currency version_id = MAX版本的ID?

编辑

要求提供示例数据。

产品表

id      name
1       product a
2       product b
3       product c
4       product d

版本表

id      product_id     version_no
1       1              1
2       2              1
3       2              2
4       3              1
5       3              2
6       4              1

货币表

id      product_id     version_id   currency
1       1              1            USD
2       2              2            USD
3       2              3            USD
4       3              4            USD

从这些数据中,我应该得到这个返回值:

product_id      product_name
3               product c
4               product d

这是因为在以下产品的最高版本上

product_id      version
1               1
2               2
3               2
4               1

只有产品3和4带有这些version_nos的货币表上没有条目

这够清楚吗?

1 个答案:

答案 0 :(得分:1)

使用左连接:空值的where条件将为您提供所需的结果

select product_id,name
    from
    (select product_id, max(version_id) as vid
    from versiontable 
    group by product_id) v
    left join currencytable c on v.product_id=c.product_id and v.vid=c.version_id
    left join procuttable p on p.id=v.product_id
    where c.product_id is null and c.version_id is null