SQLite条件SELECT语句-多个条件但一个语句

尼克·伯恩斯

我有2个表,一个是客户列表,另一个是这些客户的历史和将来交货日期的列表。

创建示例表的便捷代码:

CREATE TABLE Customers (
  id INTEGER PRIMARY KEY AUTOINCREMENT,

  name TEXT
);

INSERT INTO Customers (name) VALUES ('David');
INSERT INTO Customers (name) VALUES ('John');
INSERT INTO Customers (name) VALUES ('Anne');

CREATE TABLE Orders (
  id INTEGER,
  item TEXT,
  delivery_date TEXT
);

INSERT INTO Orders VALUES  ( 1, 'gopro' , '2016-04-05');
INSERT INTO Orders VALUES  ( 1,'car', '2015-12-30');
INSERT INTO Orders VALUES  ( 1,'watch', '2015-10-20');
INSERT INTO Orders VALUES  ( 2, 'laptop', '2016-04-15');
INSERT INTO Orders VALUES  ( 3, 'car', '2016-01-15');
INSERT INTO Orders VALUES  ( 3,'cup', '2015-11-30');

我需要创建一个SQL语句来显示所有客户及其最近和下一个交货日期。

(类似-SELECT *,来自具有最新和下一个项目以及来自订单的日期的客户。)

预期结果表

Name, Most Recent Item, Recent Date, Next Item, Next Date
David, car, 2015-12-30, gopro, 2016-04-05
John, NULL, NULL, laptop, 2016-04-15
Anne, car, 2016-01-15, NULL, NULL

但是我可以用一个语句得到的最接近的是:

SELECT
(SELECT o.item from Orders WHERE delivery_date < date('now') ORDER BY delivery_date DESC LIMIT 1) as Last_Item_Ordered,
(SELECT o.delivery_date from Orders WHERE delivery_date < date('now') ORDER BY delivery_date DESC LIMIT 1) as Last_Delivery_Date,
(SELECT o.item from Orders WHERE delivery_date >= date('now') ORDER BY delivery_date ASC LIMIT 1) as Next_Item_Ordered,
(SELECT o.delivery_date from Orders WHERE delivery_date >= date('now') ORDER BY delivery_date ASC LIMIT 1) as Next_Delivery_Date,
c.*
FROM (Orders o INNER JOIN Customers c ON c.id = o.id)
GROUP BY c.name
ORDER BY c.id; 

实际的结果是,因为这:

Last_Item_Ordered   Last_Delivery_Date  Next_Item_Ordered   Next_Delivery_Date  id  name
watch        2015-10-20      watch       2015-10-20      1       David
laptop       2016-04-15      laptop      2016-04-15      2       John
cup          2015-11-30      cup         2015-11-30      3       Anne

今天的日期是2016年2月21日,因此上述客户将来的结果预计某些值将为NULL。

如果有人可以帮助,将不胜感激。谢谢

乔治·贝索斯(Giorgos Betsos)

您可以使用以下查询:

SELECT (SELECT o.item 
        from Orders AS o 
        WHERE o.id = c.id AND delivery_date < date('now')
        ORDER BY delivery_date DESC LIMIT 1) as Last_Item_Ordered,
       (SELECT o.delivery_date 
        from Orders AS o 
        WHERE o.id = c.id AND delivery_date < date('now')
        ORDER BY delivery_date DESC LIMIT 1) as Last_Delivery_Date,
       (SELECT o.item 
        from Orders AS o 
        WHERE o.id = c.id AND delivery_date >= date('now')
        ORDER BY delivery_date ASC LIMIT 1) as Next_Item_Ordered,
       (SELECT o.delivery_date 
        from Orders AS o 
        WHERE o.id = c.id AND delivery_date >= date('now')
        ORDER BY delivery_date ASC LIMIT 1) as Next_Delivery_Date,
        c.*
FROM Customers c
ORDER BY c.id;

在这里演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个查询中具有不同WHERE条件的多个SELECT语句

来自分类Dev

一个条件语句中多个“或”语句的有效方法

来自分类Dev

基于对另一个 IF 语句的响应的 IF 语句条件

来自分类Dev

在一个SQL语句中连接多个select语句

来自分类Dev

多个if语句和一个带多个条件的if语句之间的处理时间是否有所不同?

来自分类Dev

条件UPDATE sqlite语句

来自分类Dev

在一个if语句中使用多个OR条件是否正确,替代方法是什么?

来自分类Dev

如何在Python中的一个if语句中具有多个条件

来自分类Dev

在Ruby语言的一个if语句中使用多个条件

来自分类Dev

多个 PHP Else If 语句即使满足其他条件也只返回第一个条件

来自分类Dev

SQLite3(python)查询可在一个SELECT语句中搜索多个列

来自分类Dev

如何在iOS的sqlite中的一个查询中执行多个select语句?

来自分类Dev

多个条件与多个语句

来自分类Dev

多个条件与多个语句

来自分类Dev

一个条件数未知的if语句python

来自分类Dev

需要一个条件语句来获得所需的输出

来自分类Dev

在 if 语句条件中传递一个函数

来自分类Dev

如何从一个SELECT语句插入多个表

来自分类Dev

MySQL在一个查询中包含多个SELECT语句

来自分类Dev

具有一个或多个NOT EXISTS子句的SELECT语句

来自分类Dev

如何从多个独立的select语句构造一个表?

来自分类Dev

条件语句似乎为同一个变量存储了多个值。范围界定错误?

来自分类Dev

Swift“ If”语句的多个条件?

来自分类Dev

多个条件语句的AND / OR(&& / ||)逻辑

来自分类Dev

IF语句中的多个OR或AND条件

来自分类Dev

if语句中的多个条件

来自分类Dev

if语句的多个条件

来自分类Dev

if 语句中的多个或条件

来自分类Dev

多个条件的if语句

Related 相关文章

  1. 1

    一个查询中具有不同WHERE条件的多个SELECT语句

  2. 2

    一个条件语句中多个“或”语句的有效方法

  3. 3

    基于对另一个 IF 语句的响应的 IF 语句条件

  4. 4

    在一个SQL语句中连接多个select语句

  5. 5

    多个if语句和一个带多个条件的if语句之间的处理时间是否有所不同?

  6. 6

    条件UPDATE sqlite语句

  7. 7

    在一个if语句中使用多个OR条件是否正确,替代方法是什么?

  8. 8

    如何在Python中的一个if语句中具有多个条件

  9. 9

    在Ruby语言的一个if语句中使用多个条件

  10. 10

    多个 PHP Else If 语句即使满足其他条件也只返回第一个条件

  11. 11

    SQLite3(python)查询可在一个SELECT语句中搜索多个列

  12. 12

    如何在iOS的sqlite中的一个查询中执行多个select语句?

  13. 13

    多个条件与多个语句

  14. 14

    多个条件与多个语句

  15. 15

    一个条件数未知的if语句python

  16. 16

    需要一个条件语句来获得所需的输出

  17. 17

    在 if 语句条件中传递一个函数

  18. 18

    如何从一个SELECT语句插入多个表

  19. 19

    MySQL在一个查询中包含多个SELECT语句

  20. 20

    具有一个或多个NOT EXISTS子句的SELECT语句

  21. 21

    如何从多个独立的select语句构造一个表?

  22. 22

    条件语句似乎为同一个变量存储了多个值。范围界定错误?

  23. 23

    Swift“ If”语句的多个条件?

  24. 24

    多个条件语句的AND / OR(&& / ||)逻辑

  25. 25

    IF语句中的多个OR或AND条件

  26. 26

    if语句中的多个条件

  27. 27

    if语句的多个条件

  28. 28

    if 语句中的多个或条件

  29. 29

    多个条件的if语句

热门标签

归档