2016-05-13 10 views
1

私は自分が衣装屋などを長らく所有していると言います。MySQL外来キー制約のない値を取得し、日付を比較するテーブルを異ならせる

tableAは衣装の情報を保持します。

  • タイプ(すなわちハルク、スーパー等)
  • バーコード(FK REFERENCES TABLEB)
  • hirageFee

TABLEBはhirageに関する情報を保持しています。

  • バーコード(REFERENCESのにtableA)
  • hiredOn(日)
  • dueBack(日)
  • トランザクションがありません。

衣装がレンタル可能かどうかを確認するクエリを作成しようとしています。

を(TABLEB FROMバーコードを選択)とされている現在のレンタルをチェックする

SELECT *をにtableAどこからバーコードNOT IN:

は私が今までに賃借されていないすべての衣装を見つけるために、次を使用することができますすでにストアに戻る:

SELECT * FROMテーブルB WHERE dueBack <( 'enter-current-date');

しかし、私はこれらの質問をどのように組み合わせるか、それが現在保管中のすべての衣装を見たり見つけたりするための正しいアプローチではないかと固執しています。

答えて

1

あなたが貸し出されていないことTableAの中に何の項目を見たい場合は、現在の日付がSQLそれに発現

に落ちることを貸し出し期間を持たないアイテムとして質問を言い換えることができます

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

は、同じ結果を達成するために、他の多くの方法がありますが、私は、これはうまく質問の意味に合うと思う:このような相関サブクエリで否定exists述語を使用してAAクエリ、だろう。

+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; 
関連する問題