Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2013
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Contar los registros visibles cuando se usa GROUP BY

Hola comunidad

Tengo una tabla de la cual necesito obtener cierta informacion. Dicha informacion la obtengo usando
un GROUP BY pero el problema es que necesito solo saber el numero de registros y al usar COUNT(*) se
me cuentan todos los registros. para que se vea mejor he decidido postear una tabla mas sencilla
donde a simple vista se vea el resultado. En esta tabla hay varios registros por turno, por fecha.
Lo que quiero es saber cuantos turnos se trabajaron por fecha pero sin los repetidos o sea para una
fecha X solo pueden trabajarse 3 turnos el 1 el 2 y el 3, aunque hallan varios 1 o 2 o 3.
Al usar en la tabla de abajo esta sentencia
Código SQL [-]
SELECT * FROM `test`.`esquema` WHERE conv = 1 GROUP BY fecha, turno;
Obtengo 6 registros con los Ids 1, 4, 7, 10, 11, 12 que son los que debo obtener, pero esta
sentencia sql forma parte de otra mucho mas compleja por lo que esta solo debe devolverme el
total de registros, sin embargo al usar un COUNT(*) me cuenta todos los registros , los que se
ven y los que no . Me imagino esto sea por el funcionamiento del GROUP BY . Alguna idea de como
obtener el numero de registros ???

Gracias por la ayuda !!!


Código SQL [-]
DROP TABLE IF EXISTS `esquema`;
CREATE TABLE `esquema` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `conv` varchar(45) NOT NULL,
  `orden` varchar(45) NOT NULL,
  `fecha` varchar(45) NOT NULL,
  `turno` varchar(45) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `esquema`
--

/*!40000 ALTER TABLE `esquema` DISABLE KEYS */;
INSERT INTO `esquema` (`id`,`conv`,`orden`,`fecha`,`turno`) VALUES 
 (1,'1','1','2013-03-11','1'),
 (2,'1','2','2013-03-11','1'),
 (3,'1','3','2013-03-11','1'),
 (4,'1','4','2013-03-11','2'),
 (5,'1','5','2013-03-11','2'),
 (6,'1','6','2013-03-11','2'),
 (7,'1','7','2013-03-11','3'),
 (8,'1','8','2013-03-11','3'),
 (9,'1','9','2013-03-11','3'),
 (10,'1','10','2013-03-12','1'),
 (11,'1','11','2013-03-12','2'),
 (12,'1','12','2013-03-13','3');
/*!40000 ALTER TABLE `esquema` ENABLE KEYS */;
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 14-03-2013
VictorPenyalver VictorPenyalver is offline
Miembro
 
Registrado: abr 2006
Posts: 19
Poder: 0
VictorPenyalver Va por buen camino
He probado esto en Oracle y funciona, no sé en MySQL.
El count(distinct turno) deberia devolverte el total de turnos diferentes que tienen ordenes en esa fecha.

Código SQL [-]

SELECT fecha, count(distinct turno) 
FROM `test`.`esquema` WHERE conv = 1 
GROUP BY fecha;
Responder Con Cita
  #3  
Antiguo 14-03-2013
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Si en MySQL funcina tambien pero la sentencia debe devolverme un solo resultado o sea aun así necesito la suma del
Código SQL [-]
count(distinct turno)
en estos momentos devuelve tres registros con estos valores 3, 2, 1 y lo que necesito es que me devuelva la suma de esos valores o sea 6 en un solo registro.
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #4  
Antiguo 14-03-2013
VictorPenyalver VictorPenyalver is offline
Miembro
 
Registrado: abr 2006
Posts: 19
Poder: 0
VictorPenyalver Va por buen camino
Sólo debes agrupar por fecha, no por turno.
Lo que te está dando es el total de turnos distintos por fecha.
Como tienes 3 fechas diferentes te salen esos 3 valores. Vamos, que sólo te está devolviendo un valor por fecha.

Última edición por VictorPenyalver fecha: 14-03-2013 a las 17:50:00.
Responder Con Cita
  #5  
Antiguo 14-03-2013
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Exacto... sin embargo lo que necesito es el total. O sea la suma delos valores que me esta mostrando por fecha. Normalmente usaria el Count(*) pero no funciona Necesitaria algo como esto ...
Código SQL [-]
SELECT SUM(
SELECT count(distinct turno) FROM `test`.`esquema` WHERE conv = 1 GROUP BY fecha) as suma;

Que me devuelva solo el resultado o sea 6. Pero no funciona :´(

Código SQL [-]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count(distinct turno) FROM `test`.`esquema` WHERE conv = 1 GROUP BY fecha' at line 2

Esta sentencia forma parte de una sentencia mucho mas grande por lo que no puede devolverme mas de un registro de resultado. O Sea aunque me devuelva una por fecha voy a necesitar sumas eso que me esta devolviendo por fecha !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #6  
Antiguo 14-03-2013
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
MUCHAS GRACIAS POR LA AYUDA hehehehehe que con tanto explicar y explicar no había agradecido apropiadamente !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
contar registros promediados gulder MySQL 0 05-07-2012 22:06:38
Contar registros de un dataset martinlillo Conexión con bases de datos 6 29-09-2011 15:35:55
Contar Registros KAYO SQL 10 22-07-2010 19:47:43
Consulta SQL Contar registros tebre Varios 4 26-03-2009 18:18:52
Contar Registros Roilo SQL 10 18-07-2006 21:20:24


La franja horaria es GMT +2. Ahora son las 08:48:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi