Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-如何从两个表中按日期排序?_Sql_Date_Sql Order By - Fatal编程技术网

SQL-如何从两个表中按日期排序?

SQL-如何从两个表中按日期排序?,sql,date,sql-order-by,Sql,Date,Sql Order By,我会尽量问清楚我的问题 我有三个表,每个表都包含一个日期值。节点和产品具有创建日期,共享具有时间戳日期。我需要弄清楚如何在一个日期前订购。。。我需要把两个日期合并在一起 它需要符合这个声明 SELECT sc.auto_id AS autoid, sc.uid AS sharedby, n.nid, sc.message AS sharedmessage, ( SELECT COUNT(1) FROM {share_content} AS sc2 WHERE sc2.nid =

我会尽量问清楚我的问题

我有三个表,每个表都包含一个日期值。节点和产品具有创建日期,共享具有时间戳日期。我需要弄清楚如何在一个日期前订购。。。我需要把两个日期合并在一起

它需要符合这个声明

SELECT sc.auto_id AS autoid, sc.uid AS sharedby, n.nid, sc.message AS sharedmessage, 
    (
SELECT COUNT(1) 
FROM {share_content} AS sc2
  WHERE sc2.nid = sc.nid
) AS countnid 
FROM {node} n LEFT JOIN {content_type_product} p on n.nid = p.nid 
  LEFT JOIN {share_content} sc on sc.auto_id=
(
SELECT MAX(auto_id) FROM share_content sc1
WHERE sc1.nid = n.nid 
LIMIT 1
) 
WHERE (
    n.type = 'blog' 
    OR n.type = 'field_school' 
    OR n.type = 'photo_gallery' 
    OR n.type = 'forum' 
    OR n.type = 'product_review' 
    OR n.type = 'product' and p.field_front_page_value = 'Add to feed'
    OR n.type = 'reference'
    OR n.type = 'video_gallery'
    OR n.type = 'video'   
    OR n.type = 'groups' 
    OR n.type = 'group_post'  
    OR n.type = 'status' 
    OR (n.type = 'event' AND n.uid != '2')
    OR n.type = 'jobs_careers'
    OR n.type = 'post_link'
    OR (n.type = 'news_article' AND n.uid != '2' AND n.uid != '0'))  
AND n.status = '1' 
ORDER BY n.created DESC";
订单需要是n.created、p.created和sc.date\u shared之间的合并

谢谢,

马特

太可怕了

ORDER BY 
(CASE WHEN Table2.Id IS NULL AND Table3.Id IS NULL THEN Table1.Created_on
      WHEN Table2.Is IS NULL 
       THEN (CASE WHEN Table1.CreatedOn <= Table3.CreatedOn THEN Table1.CreatedOn 
                  ELSE Table3.CreatedOn END)
      WHEN Table3.Id IS NULL
       THEN (CASE WHEN Table1.CreatedOn <= Table2.timestamp THEN Table1.CreatedOn 
                  ELSE Table2.timestamp END)
      WHEN Table1.CreatedOn <= Table3.CreatedOn AND Table1.CreatedOn <= Table2.timestamp
       THEN Table1.CreatedOn
      WHEN Table3.CreatedOn <= Table1.CreatedOn AND Table3.CreatedOn <= Table2.timestamp
       THEN Table3.CreatedOn
      ELSE Table2.timestamp END)

使用SELECT AS为查询重命名第三个表中的列

btw,该查询将执行得非常糟糕-它使用一个相关的聚合子查询。ie对表1、表2和表3的每个组合都进行了大量查询!对于大量行,它可能永远不会返回。我想你应该放弃这个查询,重新考虑你是在使用MS SQL Server还是其他引擎?MS SQL中的时间戳数据类型与任何日历或时钟都没有直接关系-它用于行版本控制。请摆脱{table1}1之类的东西-这些糟糕的名称选择使您的问题很难理解,也很烦人。请使用一些有意义的,实际有意义的或至少容易理解的别名。它使你的问题更容易阅读,因此会提高你快速得到答案的机会波希米亚人-我遗漏了一些东西。。。试图让它更容易看-也许没有帮助。。。但查询是有效的。我运行一个社区墙,发布持续的用户内容。。只是想让这里更容易看。