Pesquisar na Comunidade
Mostrando resultados para as tags ''join''.
Encontrado 27 registros
-
Olá, preciso de uma ajuda, estou a vários dias tentando e não consegui uma solução. O Post está longo, pois não gostaria que ficasse dúvidas (kkk) Preciso fazer uma consulta com várias tabelas, e buscar dados usando chave de uma tabela filha. Vou resumir, porém a lógica é a mesma plano = tabela principal, local onde os usuarios postam seus planejamentos usuario = é o proprietário do planejamento comp = é o que ele vai fazer ... cliente = é a loja que ele vai atuar grupo = é o grupo das lojas Ex: Grupo Casas Bahia que tem n lojas. As tabelas teriam uma estrutura assim ** plano plano_id plano_data usuario_id comp_id cidade_id cliente_id plano_real plano_investimento ** usuario usuario_id usuario_nome ** comp compromisso.id compromisso ** grupo grupo_id grupo_nome grupo_categ **cliente cliente_id cliente_nome grupo_id Consigo fazer toda a consulta até o momento de tentar fazer aparecer dados da tabela grupo que esta ligada ao cliente e não ao plano, quando me referencio a tabela grupo : inner join comp on plano.comp_id = comp.comp_id inner join grupo on grupo.grupo_id = cliente.grupo_id ocorre o erro : Error Code: 1054. Unknown column 'grupo.grupo_id' in 'on clause' Desde já obrigado pela ajuda.
-
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!!!!