Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Contar Registros (https://www.clubdelphi.com/foros/showthread.php?t=33825)

Roilo 18-07-2006 15:59:07

Contar Registros
 
Un abraso al FORO.
He realizado una consulta para listar todas las Altas y la Bajas de mi empresa.
esto es parte del resultado:
Código Delphi [-]
Chapa  Dpto Mov
39081   233  ALT
37069   265  ALT
40091   266  BAJ
25625   233  ALT
El problema es que no sé como contar las ALT y las BAJ que hay en esa lista. En realidad soy bien nuevo haciendo consultas SQL y les agradecería que me ayudaran en esto y si pueden recomendarme un buen manual de SQL les agradecería el doble.
GRACIAS de antemano.

afarenas 18-07-2006 16:24:26

Consulta
 
una formar es
select count(*) from tabla
where mov='ALT'

Y para las bajas
select count(*) from tabla
where mov='BAJ'

Ahora si lo quieres hacer en un solo sql este tambien te podria servir

SELECT mov,COUNT(*) FROM tabla
GROUP BY mov

auminedo que MOV solo tenga valor 'ALT' Y 'BAJ'

userlazarus 18-07-2006 16:25:02

Hola
Mira a ver si esto te pudiera servir.

Roilo 18-07-2006 16:44:40

Perdon!!!
 
Se me quedabe lo más importante.
Resulta que quiero saber cómo puedo guardar el resultado en el caption de una etiqueta. Ejp: Se han efectuado 5 Altas y 12 Bajas.
De paso aprendo a extraer valores de un query.(espero me entiendan).
userlazarus tu link está genial (increiblemente no lo conocía).GRACIAS

olbeup 18-07-2006 18:00:58

Mira si esto te vale:


Código SQL [-]
SELECT TOP 1
(SELECT COUNT(*) FROM Tabla1 WHERE Mov = 'Alt') AS ALTAS,
(SELECT COUNT(*) FROM Tabla1 WHERE Mov = 'Baj') AS BAJAS
FROM Tabla1





Un saludo:eek:

olbeup 18-07-2006 18:19:40

Mira si esto te vale:

Código SQL [-]
SELECT TOP 1    (SELECT COUNT(*) FROM Tabla1 WHERE Mov = 'Alt') AS ALTAS,    (SELECT COUNT(*) FROM Tabla1 WHERE Mov = 'Baj') AS BAJAS  FROM Tabla1
Un saludos.
;)

yusnerqui 18-07-2006 19:00:22

Bueno creo que con lo que te han contestado ya tienes lo de la consulta.

Para asignar el valor de un campo a un label te recomiendo buscar el la ayuda por "FieldByName", de seguro encontrarás tu mismo la respuesta.

Saludos

Roilo 18-07-2006 20:36:53

Nada!!!
 
Ok. Le hallo mucha lógica al código que me envía olbeup y estoy ansioso por ver el resultado, pero en lo que hice me da un error en la línea 2. Les pediría que le echaran un ojo:
Código SQL [-]
SELECT TOP1 
(SELECT COUNT(*) FROM macambio.dbf WHERE cambio = 'ALT') AS ALTAS,
(SELECT COUNT(*) FROM macambio.dbf WHERE cambio = 'BAJD') AS BAJAS
FROM macambio.dbf;
Ya revisé el databasename del Query que uso y verifiqué bien el nombre de la tabla que utilizo y el campo que contiene la información. Ya eso está revisado.
GRACIAS a todos por participar.

Paoti 18-07-2006 20:52:15

Roi9lo, que estas usando como motor de base de datos.

DBase, SQL server, ORacle, Paradox.


Quita el TOP 1 de la sentencia SQL que te ha dado el compañero.


y prueba.



las sentencias pueden ser estar, aunque hay algunas cuando ya son más especificas, que variand e un motor a otro de base de datos.

Roilo 18-07-2006 21:16:28

Fin del problema.
 
EXACTO. El motor que uso es el BDE.
Se ha Resuelto sin el top1. Supongo que su función era mostrar una solo fila en el DBGrid que muestra el resultado. Sólo quedaría aclarar en el foro cómo se logra eso cuando se usa el BDE.
Ahora, en cuanto a mostrar el resultado en una etiqueta aquí va el código:
Código Delphi [-]
procedure TForm1.Query1AfterOpen(DataSet: TDataSet);
begin
 label1.caption:='Se han efectuado '+query1.fieldbyname('altas').asstring+' altas y '+query1.fieldbyname('bajas').asstring+' bajas.';
end;
GRACIAS miles.

Paoti 18-07-2006 21:20:24

Tiernes toda la razón riolo, pero el USO del TOP X solo es para Microsoft SQL Server, y me parece que MySQL (no estoy seguro), hay deferentes formas para cada motor.


Saludos.


La franja horaria es GMT +2. Ahora son las 04:10:54.

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