SQL Server - count(subconsulta)

   
Vista:

count(subconsulta)

Publicado por cris (1 intervención) el 15/03/2011 19:39:45
hola... espero me puedan echar una mano resulta que quiero contar los registros de una tabla q cumplen con una condicion mas otros de otra tabla. pongo la consulta que intento hacer pero me da error de sintaxis:

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ')'.

select count(usuario) from (select distinct usuario
from dbo.tblUsuario
where empresaId = '431'
and estado = 1
and usuario in(select distinct usuario from dbo.Per_empresa where empresaId ='431' ))

O esto no es posible hacerse en sql?soy algo novato
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

count(subconsulta)

Publicado por xve (86 intervenciones) el 15/03/2011 20:54:16
Hoola Cris, en principio creo que no te puede funcionar, ya que despues de from deberia de ir el nombre de una tabla...
Puede ser que desees anidar los select en la clausula where? algo asi:

select count(usuario) from Tabla WHERE campo=(select distinct usuario
from dbo.tblUsuario
where empresaId = '431'
and estado = 1
and usuario in(select distinct usuario from dbo.Per_empresa where empresaId ='431' ))

Eso si, el select anidado, unicamente puede devolver un valor. Si quieres devolver mas valores, en MySQL, puedes usar "any" o "any all" algo asi:

select count(usuario) from Tabla WHERE campo ANY ALL (select distinct usuario
from dbo.tblUsuario
where empresaId = '431'
and estado = 1
and usuario in(select distinct usuario from dbo.Per_empresa where empresaId ='431' ))

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

count(subconsulta)

Publicado por Leonardo Josué (79 intervenciones) el 17/03/2011 15:54:26
El error como creo que es porque falta definir un alias a la subconsulta.

select * from (subconsulta) ALIAS

La consulta debería quedar así:

select count(usuario) from (select distinct usuario
from dbo.tblUsuario
where empresaId = '431'
and estado = 1
and usuario in(select distinct usuario from dbo.Per_empresa where empresaId ='431' )) T1

Sinceramente no entiendo muy bien cuál es la lógica que para hacer una subconsulta de este tipo, el uso de sentencias IN no es muy recomendado por el performance, tal comom comenta xve podrías buscar otras alternativas como ANY o EXISTS. Creo que deberías comenzar por plantearnos qué es lo que quieres obtener, cual es la estructura de tus tablas y que nos pusieras algunos datos de ejemplo. Igual y podemos ayudarte a obtener una mejor alternativa de solución.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar