【问题标题】:How to use BETWEEN condition using using main query and sub queries如何使用主查询和子查询来使用 BETWEEN 条件
【发布时间】:2018-09-01 05:04:57
【问题描述】:

我在 3 个表中使用 JOIN 并让计数和 mysql 查询正常工作,现在我的问题是我想在我的主查询中添加一个 BETWEEN 条件,这里 SQL FIDDLE 你可以检查我的表架构。在trip_details 表中,我有一个名为tripDate 的列,仅使用此列我必须在主查询中使用BETWEEN 条件

Mysql查询:

    SELECT COUNT(T.tripId) as Escort_Count,
  (
      SELECT COUNT(*) FROM 
      (
          SELECT a.allocationId
          FROM trip_details a 
          INNER JOIN cab_allocation c ON a.allocationId = c.allocationId 
          WHERE c.`allocationType` =  'Adhoc Trip'
          GROUP BY a.allocationId
      ) AS Ad

  ) AS Adhoc_Trip_Count,
  (SELECT COUNT(id) FROM trip_details) as Total_Count
  FROM 
  ( 
      SELECT a.tripId FROM 
      trip_details a 
      INNER JOIN 
      escort_allocation b 
      ON a.allocationId = b.allocationId 
      GROUP BY a.allocationId 
  ) AS T 

【问题讨论】:

  • 您的代码示例中的BETWEEN 在哪里?或者,你想要它在哪里?你还应该解释你想要达到的目标(也许通过向我们展示你得到的结果与你想要的结果)
  • 欢迎来到本站。虽然您的问题的格式和第一篇文章的整体准备工作令人印象深刻,但从您当前的查询中不清楚您还希望它做什么。事实上,您的查询中根本没有提到 BETWEEN 和它应该约束的列。
  • 顺便说一句,SELECT a.allocationId 子查询周围不需要SELECT COUNT(*),只需使用SELECT COUNT(DISTINCT a.allocationId)
  • @devlin carnate,你看到了我的 sql 小提琴,从那里trip_details 表一列将在那里称为tripDate,我想在我的查询中添加条件,因为现在我的查询工作完美但是没有中间条件,这意味着我只能在两个日期之间选择记录
  • @RoobathiN :不,我没有看到你的小提琴。作为您问题的一部分,我希望您的代码的内容和上下文在这里。

标签: mysql sql


【解决方案1】:

您必须在以下每个子查询中添加WHERE 子句:

  SELECT COUNT(T.tripId) as Escort_Count,
  (
      SELECT COUNT(*) FROM 
      (
          SELECT a.allocationId
          FROM escort_allocation a 
          INNER JOIN trip_details b ON a.allocationId = b.allocationId 
          INNER JOIN cab_allocation c ON a.allocationId = c.allocationId 
          WHERE c.allocationType = 'Adhoc Trip' AND tripDate BETWEEN '20180315' AND '20180320'
          GROUP BY a.allocationId
      ) AS Ad

  ) AS Adhoc_Trip_Count,
  (SELECT COUNT(id) FROM trip_details WHERE tripDate BETWEEN '20180315' AND '20180320') as Total_Count
  FROM 
  ( 
      SELECT a.tripId FROM 
      trip_details a 
      INNER JOIN 
      escort_allocation b 
      ON a.allocationId = b.allocationId 
      WHERE tripDate BETWEEN '20180315' AND '20180320'
      GROUP BY a.allocationId 
  ) AS T

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多