** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - consulta sql.
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoconsulta sql.

 Responder Responder
Autor
Mensaje
kiscoleto Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Junio/2005
Localización: España
Estado: Sin conexión
Puntos: 382
Enlace directo a este mensaje Tema: consulta sql.
    Enviado: 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.
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18807
Enlace directo a este mensaje Enviado: 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/
Arriba
kiscoleto Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Junio/2005
Localización: España
Estado: Sin conexión
Puntos: 382
Enlace directo a este mensaje Enviado: 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.
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18807
Enlace directo a este mensaje Enviado: 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/
Arriba
kiscoleto Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Junio/2005
Localización: España
Estado: Sin conexión
Puntos: 382
Enlace directo a este mensaje Enviado: 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.
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18807
Enlace directo a este mensaje Enviado: 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/
Arriba
kiscoleto Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Junio/2005
Localización: España
Estado: Sin conexión
Puntos: 382
Enlace directo a este mensaje Enviado: 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.
Arriba
kiscoleto Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Junio/2005
Localización: España
Estado: Sin conexión
Puntos: 382
Enlace directo a este mensaje Enviado: 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.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable