Pesquisar na Comunidade
Mostrando resultados para as tags ''join''.
Encontrado 27 registros
-
Olá. Eu estou fazendo uma pesquisa no mysql, e selecionei exemplares que foram emprestados durante um certo período, filtrando por Filial e Níveis. Os níveis ficam na tabela I Os empréstimos na tabela P E as informações do livro ficam na tabela N ( onde também tenho o id dos níveis) Utilizei a seguinte query: SELECT (SELECT COUNT(n.id_I =1)) AS 'A1', (SELECT COUNT(n.id_I =2)) AS 'A2', (SELECT COUNT(n.id_I=4)) AS 'B1', (SELECT COUNT(n.id_I =5)) AS 'B2' FROM P p INNER JOIN N n ON n.id = p.id WHERE YEAR( p.datetime ) = '2013' AND MONTH( p.datetime ) = '10' AND p.local = 2 Pelo pouco que entendo o resultado deveria ser a contagem de empréstimos em cada nível, no período e na filial determinada.Mas o resultado são valores iguais em cada nível. Alguém pode me esclarecer porque isso acontece??
-
Boa Tarde Pessoal, Sou iniciante ainda em SQL e estou tendo problemas de lentidão na consulta deste script que montei: DECLARE @TIMEZONE VARCHAR(50), @BIAS INT, @FROMDATE DATETIME, @TODATE DATETIME SET @FROMDATE = NULL SET @TODATE = NULL IF @FROMDATE IS NULL OR @TODATE IS NULL BEGIN SET @FROMDATE = CONVERT(DATETIME,CONVERT(VARCHAR,DATEADD(DAY,-7,GETDATE()),112),120) SET @TODATE = DATEADD(SECOND,-1,DATEADD(DAY,7,@FROMDATE)) END SELECT DISTINCT DATEADD(MINUTE, TZ1.BIAS, ACT.STARTTIME), DATEADD(MINUTE, TZ2.BIAS, ACT.ENDTIME), ACT.EMPLOYEEID, ACT.ACTIVITYID, DATEDIFF(SECOND, ACT.STARTTIME, ACT.ENDTIME) QTD_SEGUNDOS FROM AAAAAAAAAAAAAAAAAAA ACT (NOLOCK) INNER JOIN BBBBBBBBBBBBBBBBBBBBBBBB WO1 (NOLOCK) ON ACT.EMPLOYEEID = WO1.WORKRESOURCEID AND ACT.STARTTIME BETWEEN WO1.STARTTIME AND ISNULL(WO1.ENDTIME, CAST('99991231' AS DATETIME)) INNER JOIN BBBBBBBBBBBBBBBBBBBBBBBB WO2 (NOLOCK) ON ACT.EMPLOYEEID = WO2.WORKRESOURCEID AND ACT.ENDTIME BETWEEN WO2.STARTTIME AND ISNULL(WO2.ENDTIME, CAST('99991231' AS DATETIME)) INNER JOIN CCCCCCCCCCCC O1 (NOLOCK) ON WO1.ORGANIZATIONID = O1.ID INNER JOIN CCCCCCCCCCCC O2 (NOLOCK) ON WO2.ORGANIZATIONID = O2.ID INNER JOIN DDDDDDDDDD TZ1 (NOLOCK) ON O1.TIMEZONE = TZ1.TIMEZONE AND NOT((TZ1.ENDTIME <= ACT.STARTTIME) OR (TZ1.STARTTIME > ACT.STARTTIME)) INNER JOIN DDDDDDDDDD TZ2 (NOLOCK) ON O2.TIMEZONE = TZ2.TIMEZONE AND NOT((TZ2.ENDTIME <= ACT.ENDTIME) OR (TZ2.STARTTIME > ACT.ENDTIME)) WHERE DATEADD(MINUTE, TZ1.BIAS, ACT.STARTTIME) BETWEEN @FROMDATE AND @TODATE AND ACT.ACTIVITYID <> -4001 O resultado deste script é exatamente o que preciso (ajustar o fuso-horário de cada dia/atividade/funcionário, baseado no timzezone da organização de cada funcionário), porém esta demorando mais de 20 horas para processar. Detalhes: Tabela: AAAAAAAAAAAAAAAAAAA Tem mais de 10.000.000 de registros, separado por dia/hora inicio e dia/hora fim, por funcionário e atividade. (Esses registros são apenas de 7 dias). Tabela: BBBBBBBBBBBBBBBBBBBBBBBB Tem mais de 4.000.000 de registros, separado por dia/hora inicio e dia/hora fim, por funcionário organização. (Esses registros são apenas de 7 dias). Tabela: CCCCCCCCCCCC Tem mais de 32.000 de registros, separado por dia/hora inicio e dia/hora fim, e organização. (Esses registros são apenas de 7 dias). Tabela: DDDDDDDDDD Tem mais de 80.000 de registros, separado por dia/hora inicio e dia/hora fim, e timezone. (Esses registros são apenas de 7 dias). Já criei chaves primárias nos campos de cruzamento e não ajudou. Poderiam me auxiliar? Muito Obrigado!!!!