2017-08-07 4 views
0

ケーススタディは、以下のようなものです表は、注文IDを持っている3つのテーブルには、タスク、注文、および顧客への参加左しかし、

タスクを取得することはできません。
1タスクは、注文表に属しています。オーダーは多くのタスクを持つことができます。タスクテーブルには顧客ID情報がありません。

注文表は、顧客IDを持っています。
1注文は、お客様表に属します。顧客は多くの注文をすることができます。

ここで、タスクがどの顧客に属しているかを示すタスクテーブルを生成したいとします。 はしかし、私の結果は、すべてNULLである顧客からの列です。 customer_idが存在することを確認しました。 TasksテーブルにカスタマーIDを保存しないでください。オーダーテーブルには既に顧客情報が格納されているためです。

select `tasks`.`id`, `tasks`.`created_date`, `tasks`.`due_date`, tasks.order_id, orders.id, orders.cust_id, 
customers.id, `customers`.`name` 
from `tasks` 
left join `orders` on `tasks`.`order_id` = `orders`.`id` 
left join `customers` on `customers`.`name` = `orders`.`cust_id` 

これは私が逃したものですか?

答えて

1

あなたのクエリが選択した衣装の名前を持っていますが、衣装user_nameの上で、それに参加してみてください。列名(名前またはユーザー名)を修正してその方法で試してみることをお勧めします。例えば(私が編集した後に、ここで私は、IDとそれらを一致):

select `tasks`.`id`, `tasks`.`created_date`, `tasks`.`due_date`, tasks.order_id, orders.id, orders.cust_id, 
customers.id, `customers`.`name` 
from `tasks` 
left join `orders` on `tasks`.`order_id` = `orders`.`id` 
left join `customers` on `customers`.`id` = `orders`.`cust_id` 

の作業SQLフィドル:http://sqlfiddle.com/#!9/5835fd1/2

1

が間違ったカラムが代わりにuser_nameのfoのuser_idを使用してみてください使用してテーブルを結合している可能性があり

select 
     `tasks`.`id` 
     , `tasks`.`created_date` 
     , `tasks`.`due_date` 
     , tasks.order_id, orders.id 
     , orders.cust_id, 
    customers.id, `customers`.`name` 
    from `tasks` 
    left join `orders` on `tasks`.`order_id` = `orders`.`id` 
    left join `customers` on `customers`.`user_id` = `orders`.`cust_id` 
+0

はい、あなたは正しくありません...タイプミス... 1日の半分を修正しようとしています...愚かな間違い... – Shiro

関連する問題