gpt4 book ai didi

mysql - 如何将日期交叉连接到选择?

转载 作者:行者123 更新时间:2023-11-29 09:07:35 24 4
gpt4 key购买 nike

我需要一个查询,其中包含日期、用户名以及该日期的十二个操作 ID 之一。例如

operations
"id";"name";
"1";"LASER CUTTING"
"2";"DEBURR"
"3";"MACHINING"
"4";"BENDING"
"5";"PEM"
"6";"WELDING"
"7";"PAINT PREPARATION"
"8";"PAINTING"
"9";"SILKSCREEN PREPARATION"
"10";"SILKSCREEN"
"11";"ASSEMBLY - PACKAGING"
"12";"LASER PREP";

和用户表

bob
jimmeh
jimbo

我在这些表之间有一个交叉连接以获得如下内容:

bob 1
bob 2
bob 3
bob 4
bob 5
bob 6
bob 7
bob 8
bob 9
bob 10
bob 11
bob 12
jimmeh 1
jimmeh 2
jimmeh 3
jimmeh 4
jimmeh 5
jimmeh 6
jimmeh 7
jimmeh 8
jimmeh 9
jimmeh 10
jimmeh 11
jimmeh 12
jimbo 1
jimbo 2
jimbo 3
jimbo 4
jimbo 5
jimbo 6
jimbo 7
jimbo 8
jimbo 9
jimbo 10
jimbo 11
jimbo 12

但是我也想从 2011 年 1 月 1 日到现在每天进行交叉连接,这样我就可以使用这个查询为我提供每个人每天每个操作的记录,以便我可以将其放入数据透视表中表,然后使用它为每个用户的每个操作每周生成一个报告。

到目前为止,我有一个来自 db.users 联接操作的简单选择用户 ID,其中 Departmentid = 8

我尝试过这个:

select 
userid,
first_name,
last_name,
operations.id,
operations.name
from
protocase.tblusers
join
operations
join
select (BETWEEN "2011-01-01" and NOW())
where
departmentid = 8 and
protocase.tblusers.active = 1

类似于如何选择 (1,2,3) 或其他不来自表格的内容,但我似乎无法弄清楚如何选择 1 月 1 日到现在之间的所有日期。这可能吗?

最佳答案

您可以创建一个像这样的日期表 http://www.techrepublic.com/blog/datacenter/simplify-sql-server-2005-queries-with-a-dates-table/326

编辑:添加存储过程来生成日期:

DROP PROCEDURE IF EXISTS datePopulate;
DELIMITER $$
CREATE PROCEDURE datePopulate( startDate datetime, numDays int)
BEGIN

declare currDate datetime default startDate;
declare i int default 1;

WHILE (i<=numDays) DO

INSERT INTO DateLookup(DateFull, fullYear, weekdayname)
VALUES(currDate, date_format(currDate, '%Y'), date_format(currDate, '%a'));
SET i = i+1;
SET currDate = DATE_ADD(currDate , INTERVAL 1 DAY);

END WHILE;

END $$
DELIMITER ;

创建过程后,可以像这样调用它:

CALL datePopulate('2011-01-01', 30);

这将在表格中填充从 2011 年 1 月 1 日开始的 30 天。

我没有在插入语句中添加所有列。使用 here 中的信息添加应该非常简单。 。

关于mysql - 如何将日期交叉连接到选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6613189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com