【发布时间】:2022-01-17 12:01:34
【问题描述】:
我想要最近 3 个月的订单,我有两张桌子
- 订单表
CREATE TABLE `Orders` (
`id` int NOT NULL,
`OrderID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`shopId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`customerId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`itemCount` int NOT NULL,
`totalPrice` decimal(13,2) NOT NULL,
`customerEmail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`totalWeightInGrams` decimal(13,4) NOT NULL,
`shopDomain` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
- 订单项表
CREATE TABLE `OrderItems` (
`id` int NOT NULL,
`orderId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`variantId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`quantity` int NOT NULL,
`sku` varchar(128) NOT NULL,
`shopDomain` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`price` decimal(13,4) NOT NULL,
`weightInGrams` int DEFAULT NULL,
`discount` decimal(13,2) DEFAULT NULL,
`currency` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`requiresShipping` tinyint(1) NOT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
我想获得最近 3 个月的订单。实际上有两种类型的订单。 我想按标题区分订单,订单中将添加一种产品,我需要检查包含该产品和不包含产品的订单。 插入演示数据。
INSERT INTO `Orders` (`id`, `OrderID`, `shopId`, `customerId`, `itemCount`, `totalPrice`, `customerEmail`, `totalWeightInGrams`, `shopDomain`, `createdAt`, `updatedAt`) VALUES
(1, '4029121691694', '1', '5376382468142', 2, '44.36', 'shiv@test.com', '2000.0000', 'test.com', '2021-12-01 14:02:24', '2021-12-01 14:02:24'),
(7, '4029152722990', '1', '5376382468142', 2, '44.36', 'shiv@one.com', '2000.0000', 'test2.com', '2021-12-01 15:01:16', '2021-12-01 15:01:16'),
INSERT INTO `OrderItems` (`id`, `orderId`, `variantId`, `title`, `quantity`, `sku`, `shopDomain`, `price`, `weightInGrams`, `discount`, `currency`, `requiresShipping`, `createdAt`, `updatedAt`) VALUES
(5, '4029121691694', '32790648258606', ' product test1 ', 1, 'ST-0001', 'test.com', '19.9900', 2000, '0.00', 'INR', 1, '2021-12-01 14:02:25', '2021-12-01 14:02:25'),
(6, '4029121691694', '39639081451566', 'Static product', 1, 'STO2020', 'test.com', '0.6500', 0, '0.00', 'INR', 0, '2021-11-17 14:02:25', '2021-12-01 14:02:25'),
(7, '4029152722990', '39639081451566', 'Static product', 1, 'STO2020', 'test.com', '0.6500', 0, '0.00', 'INR', 0, '2021-12-01 15:01:17', '2021-12-01 15:01:17');
我在订单中添加静态产品,所以我需要检查所有具有“静态产品”标题且没有最近 3 个月订单的静态产品的订单。
输出将是这样的,它不完全是这个数据查询的输出,但根据数据它可能是类似的。
"orders": {
"2021-11-01": {
"total": 1,
"staticProductOrder": 1
},
"2021-12-01": {
"total": 3,
"staticProductOrder": 2
}
}
我已经执行了这个查询
SELECT *
FROM Orders
INNER JOIN OrderItems on Orders.OrderId = OrderItems.orderId
where Orders.shopDomain = '${Domain}'
我已经收到了所有的订单。
请有人在这方面帮助我。 如果您有任何问题,请告诉我。
【问题讨论】:
-
按日期添加条件(日期必须不小于当前一负3个月)。 PS。 MySQL SQL Server (MS SQL) - 删除多余的标签。
-
是的,我已经添加了“AND Orders.createdAt > CURDATE() - INTERVAL 3 MONTH”并获得最新的 3 个月订单,但我需要区分订单。如果存在,我需要检查 orderItems 表中的某些产品,然后需要显示该类型订单的总数并且没有该产品订单。
-
请更正您的 RDBMS 标签并仅选择一个。
-
将您的表格作为 CREATE TABLE 脚本提供(跳过与任务无关的列),添加一些示例数据作为 INSERT INTO 脚本,以表格格式显示此数据的所需输出。
-
我已经添加了演示内容,现在你能帮我吗?
标签: mysql