したがって、データベース スキーマに対してクエリを実行する必要があります: http://sqlfiddle.com/#!9/d0b643ですが、スキーマの例は次のようになります。
Table 1
itemID sale date salesmanID storeID
---------------------------------------------------
1 1/2015 1 1
1 3/2016 1 1
2 5/2016 2 1
2 1/2015 4 1
Table 2
itemID colorID price
--------------------------------------
1 1 23
1 2 10
1 3 13
2 1 11
2 2 14
2 3 18
Table 3
ColorID color
---------------------------------------
1 Red
2 Blue
3 Green
Table 4
SaleBegin SaleEnd ColorID salesmanID storeID
----------------------------------------------------------------
1/1/2014 12/31/2014 1 0 1
1/1/2015 12/31/2015 2 0 1
1/1/2016 12/31/2016 3 0 1
1/1/2014 12/31/2014 3 2 1
1/1/2015 12/31/2016 2 2 1
SalesmanID があり、Table1 の saleDate が Table4 の StartDate と Enddate の間にある場合、その色を使用するということを where 句に含める必要があります。それ以外の場合、salesmanID がない場合は、StoreID を使用します (この例ではすべて 1 ですが、異なる可能性があります)。
これを追加している現在のクエリは次のとおりです。
select t1.itemID,t3.color,t2.price
from table_1 t1
LEFT JOIN table_2 t2
ON t1.itemID = t2.itemID
LEFT JOIN table_3 t3
ON t2.colorID = t3.colorID
LEFT JOIN table_4 t4
ON t3.colorID = t4.colorID
WHERE t1.sale_date BETWEEN saleBegin and saleEnd;
どうすればこれを実行できますか? 期待される結果は次のようになります。
itemID カラー 価格
1 Blue 10
1 Green 13
2 Blue 14
2 Blue 14