Imprimir página | Cerrar ventana

consulta sql.

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y Otros sistemas
Descripción del foro: Proyectos ADP & Sql Server, Mysql& Access, MSDE
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=50308
Fecha de impresión: 28/Enero/2020 a las 18:22


Tema: consulta sql.
Publicado por: kiscoleto
Asunto: consulta sql.
Fecha de publicación: 22/Agosto/2008 a las 14:29
Buenas tardes.
No me sale una consulta, os explico un poco tengo una consulta con una subconsulta que satura el servidor.
Me han dicho que metiendo esa subconsulta en un left join va mejor, pero no me sale ni a la de tres.
La select con la subconsulta es esta:
 
SELECT
L.LOTE,
(
  SELECT COUNT(*)  
  FROM
    (
      SELECT DISTINCT M.nexpediente, M.ano
      FROM MUESTRA M 
      INNER JOIN CONTROLADOR CO ON M.Control=CO.Control
      WHERE 
      (CO.ACTIVIDAD = 6) AND
      (L.LOTE=M.LOTE)
    )T1
)AS REC
FROM LOTE L 
INNER JOIN CERTIFICA C ON L.Certifica=C.Certifica 
Where 
 (L.lote > 15000) And
 (L.tipoControl = 2)
Tengo que meter el campo REC dentro de un left join pero no sé como hacerlo....Cry
 
por favor una ayudita.
 
 


-------------
SALUDOS DESDE SEVILLA (Viva el Sevilla F.c)KISCOLETO.



Respuestas:
Publicado por: Emilio
Fecha de publicación: 22/Agosto/2008 a las 14:41
Hola!
 
¿De que base de datos hablamos?


-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: kiscoleto
Fecha de publicación: 22/Agosto/2008 a las 14:54
Buenas tardes Emilio.
La base de datos es sql server.
Esta es la 2ª vez que me moveis el mensaje Smile.
 


-------------
SALUDOS DESDE SEVILLA (Viva el Sevilla F.c)KISCOLETO.


Publicado por: Emilio
Fecha de publicación: 22/Agosto/2008 a las 16:00
El mensaje está en "Access y Otros sistemas"
 
De hecho la select indica cualquier cosa menos sql server (esos join en sql server no rulan), por lo que te aconsejo que lo aclares desde el primer momento y así no habrá dudas.


-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: kiscoleto
Fecha de publicación: 24/Agosto/2008 a las 19:14
Perdona emilio no entiendo que me dices.
'Esos join no rulan?'...a mi esta query se ejecuta bien pero tarda mucho.
 
gracias.


-------------
SALUDOS DESDE SEVILLA (Viva el Sevilla F.c)KISCOLETO.


Publicado por: Emilio
Fecha de publicación: 24/Agosto/2008 a las 19:29
Quiero decir que en SQL Server, directamente, no funcionaría nunca un join, por lo que la select no indica que se trate de SQL Server que es a lo que me refería y por tanto por eso hemos de preguntar a que te refieres y que es mejor explicarlo previamente.

-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: kiscoleto
Fecha de publicación: 25/Agosto/2008 a las 07:53
ok.
Lo que tengo que hacer es meter la subconsulta:

(
  SELECT COUNT(*)  
  FROM
    (
      SELECT DISTINCT M.nexpediente, M.ano
      FROM MUESTRA M 
      INNER JOIN CONTROLADOR CO ON M.Control=CO.Control
      WHERE 
      (CO.ACTIVIDAD = 6) AND
      (L.LOTE=M.LOTE)
    )T1
)AS REC
Dentro de un left join.
La palabra señalada como amarilla es la que debe de hacer de union.
 
gracias y espero haberme explicado.


-------------
SALUDOS DESDE SEVILLA (Viva el Sevilla F.c)KISCOLETO.


Publicado por: kiscoleto
Fecha de publicación: 08/Septiembre/2008 a las 09:22
Por fin tengo mi select.
El añadir las subconsultas a left join aumentan el rendimiento de la query de una forma gigantesca, antes la query está pero con 10 subconsultas más(tardaba 4 minutos) y ahora con esas subconsultas metidas con left join (no llega a 12 segundos) es increíble.
 
 
 
SELECT L.LOTE,ISNULL(MAX(ExpOCR),0)Exp
FROM LOTE L
LEFT JOIN
 (
  SELECT LOTE, COUNT(*) as Exp
  from
  (
   select M.NExpediente, M .Ano, M .lote
   FROM MUESTRA M 
   INNER JOIN CONTROLADOR CO ONN M.Control=CO.Control
   WHERE
   (CO.Actividad=6)
   group by m.NExpediente,m.Ano,m.lote
  )t
 group by lote
 )Exp on l.lote=Exp.lote
 
 
 
se puede dar por cerrado.
Smile


-------------
SALUDOS DESDE SEVILLA (Viva el Sevilla F.c)KISCOLETO.



Imprimir página | Cerrar ventana