2016-04-24 5 views
0

私はbillsテーブルにcolumn customer_typecustomer_idフィールドを持っています。左の結合テーブル名は、主クエリをダイナミックに構成します。

このcustomer_typeは、お客様がcustomersテーブルまたはusersテーブルまたはsuppliersテーブルにいるかどうかを示します。

customer_typeに従って左結合のクエリを作成する必要があります。

select c.* from bills b 
left join ***b.customer_type*** c on c.id = b.customer_id 

答えて

1

あなたは必要な条件で、3つすべてに参加することができます:

select c.*, u.*, s.* from bills b 
left join customers c on c.id = b.customer_id and b.customer_type = 'customers' 
left join users u on u.id = b.customer_id and b.customer_type = 'users' 
left join suppliers s on s.id = b.customer_id and b.customer_type = 'suppliers' 

その後、あなたは結果から関連するデータを取ることができます。

しかし、これらの3つのテーブルに類似の列がある場合は、1つのタイプの情報を1つの場所に保存するようにデータベースを再構成することができます。