SQL连接3个表时按日期列表获取订单

时间:2015-06-26 14:12:56

标签: mysql join

我的桌子:

T1 = Projects
T2 = bid_details
T3 = bid_submission_details
T4 = quote_submission_details

这就是数据流的工作原理:

This is how Data flow Works SQL代码:

"SELECT *,T3.bidsubmit_date,T4.Quotesubmit_date FROM `Projects` T1
   LEFT JOIN `bid_details` T2 ON(T2.proj_reff = T1.proj_reff) 
   LEFT JOIN `bid_submission_details` T3 ON(T3.bid_reff = T2.bid_reff)
   LEFT JOIN `quote_submission_details` T4 ON(T4.proj_reff = T1.proj_reff)
ORDER BY T3.bidsubmit_date,T4.Quotesubmit_date ASC";

结果视图:

enter image description here

我尝试了很多方法来提交日期。但没有任何效果。在结果视图中,蓝色突出显示的行是2014年的日期,但是当我按升序排序时,它不会出现在列表的顶部。

它始终首先从Quote Submission表中排序结果,然后从Bid Submission表中排序结果。可以在结果视图中看到项目类型。

我希望通过提交日期获得订单,无论它是什么类型的项目!

1 个答案:

答案 0 :(得分:0)

将COALESCE()函数与其他三个表一起使用。

SELECT *,T3.bidsubmit_date,T4.sub_date,
  COALESCE(T3.bidsubmit_date,T4.sub_date) AS SubmiDates
FROM `$SQLTable` T1
  LEFT JOIN `quote_submission_details` T4 ON(T4.pro_ref_no = T1.ref_no)
  LEFT JOIN `bid_details` T2 ON(T2.pro_ref_no = T1.ref_no) 
  LEFT JOIN `bid_submission_details` T3 ON(T3.bid_ref_no = T2.bid_ref_no) 
ORDER BY SubmiDates ASC";
经过许多非常高兴的人找到了解决方案!!!