2017-09-17 20 views
-1

私はミニレストラン管理システムを開発しており、これらのデータベース設計をしています。MySQL - テーブル内のデータが他のテーブルに存在するか確認してください

これは私の "テーブル"です。

TABLES table

これは私の"ORDERS"テーブルです。

ORDERS table

私はテーブルが空いているまたはを占領しているかどうかを判断しますクエリを作成したいと思います。私はhas_paidと呼ばれる私の注文表の列を持っている、私はテーブルが空いているか占領されているかどうか私の基礎としてその列を作りたいと思います。 ordersテーブルのtable_idのため、ordersテーブルが自分の「テーブル」テーブルに接続されています。

理想的には、私はこのような何かにつながるクエリを持っているしたいと思います:

table.id | table.name | available or occupied 
    1  | table 1 | available 
    2  | table 2 | occupied 
    3  | table 3 | occupied 
    4  | table 4 | available 

ordersテーブルはテーブルIDを繰り返し含まれるデータを持っていることにも注意してください。このシナリオのように、複数の顧客がその日に同じテーブルを使用しています。

このようなクエリを作成する方法についてはわかりません。あなたの助けが大変ありがとうございます。ありがとうStackoverflow!

+0

複数の一致がある場合にどのように使用可能か占有するかを定義する方法を説明してください。 –

+0

@ GordonLinoff - 'has_paid' = 0なら、テーブルが占有されていることを意味します。そうでなければ空です。 – PinoyStackOverflower

+0

テーブルをテキストデータテーブルとして共有してください(結果と同じように)またはwww.sqlfiddle.comのSQLステートメント(CREATEおよびINSERTステートメント)を画像と共有する代わりに...この方法でより良いヘルプを得る –

答えて

1

おそらく、最新のレコードをordersから取得します。 1つの方法は、相関サブクエリです。

select t.*, 
     (select (case when has_paid = 0 then 'occupied' else 'vacant' end) 
     from orders o 
     where o.table_id = t.table_id 
     order by o.id desc 
     limit 1 
     ) as vacant_or_occupied 
from tables t; 
+0

こんにちは、ご回答どうもありがとうございました!私はあなたの質問を試み、それはうまく動作しているようだ!しかし、私はテーブルが注文テーブルに存在しないときにNULLを返すが、それはNULLの場合は、テーブルが空であることを意味することに気づいた。 – PinoyStackOverflower

+0

@PinoyStackOverflower。 。 。私はあなたのビジネスルールが 'orders'の行がないテーブルに対して何であるのか分かりません。 –

関連する問題