MySQL获取没有外键约束的值并比较日期不同的表

时间:2016-05-13 23:30:55

标签: mysql

说我拥有一家服装店或者其他很长的东西。

tableA保存着装的信息。

  • 条形码(fk REFERENCES tableB)
  • 类型(即绿巨人,超人等)
  • hirageFee

tableB保存有关hirage的信息。

  • 条形码(REFERENCES tableA)
  • 雇用(日期)
  • dueBack(date)
  • 交易编号

我正在尝试编写一个查询,以检查服装是否可以租用。

我可以使用以下方法查找以前租过的所有服装:

SELECT * FROM tableA WHERE条形码NOT IN(SELECT条形码FROM tableB)

并检查已经回到商店的当前租金:

SELECT * FROM tableB WHERE dueBack< ('输入电流最新&#39);

但我仍然坚持如何结合这些查询,或者这是否是查看/查找当前存储的所有服装的正确方法?

2 个答案:

答案 0 :(得分:1)

如果您想查看TableA中哪些项目未租借,您可以将问题重新显示为哪些项目没有当前日期所在的租借期

在SQL中表示,它将是一个使用带有相关子查询的否定exists谓词的查询,如下所示:

select * from TableA a
where not exists (
    select *
    from TableB b 
    where b.barcode = a.barcode
      and now() between hiredOn and dueBack
)

还有很多其他方法可以达到相同的结果,但我认为这很符合问题的语义。

答案 1 :(得分:0)

或者只使用联接

select a.* from TableA a
left join TableB b
    on b.barcode = a.barcode
      and now() between hiredOn and dueBack
where b.barcode is null;