• Sábado 9 de Noviembre de 2024, 02:25

Autor Tema:  Uso Del Count  (Leído 4559 veces)

marisol_ylonen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Uso Del Count
« en: Miércoles 20 de Junio de 2007, 17:05 »
0
:hola: Saludos a todos,

Estoy ejecutando una consulta en el sql del as400. Tengo un campo
"componentes" y otro "conjunto" en la misma tabla. Tienen en común un campo llamado "No_Empresa". "Componente" es una pieza que pertenece a un "conjunto", entonces también tienen en común "conjunto". Bueno, necesito mostrar esta información en un formulario, que además de que me muestre a que conjunto pertenece cada pieza, me diga cuántos componentes lleva cada conjunto.
El punto es que no sé si sea count lo que debo usar y si es cómo se usa?
La sintaxis para las consultas en el as400 es algo así:
select componente, conjunto from basedatos/tabla where No_Empresa='5' order by conjunto

Esto me devuelve los componentes y conjuntos ordenados por el conjunto. Ahora, cómo le hago para que cuente cuántos componentes por conjunto son?.

Muchas gracias por su atención.
 :hola:
[size=109]El hombre no se rinde a los angeles ni a la muerte por entero salvo a través de la flaqueza de su débil voluntad. Edar A. Poe, "Ligeia".Joseph Glanville[/size]

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Uso Del Count
« Respuesta #1 en: Miércoles 20 de Junio de 2007, 17:09 »
0
Código: Text
  1. select componente, conjunto from basedatos/tabla where No_Empresa='5' order by conjunto
  2.  


ummmm si es en SQL seria algo asi
Código: Text
  1.  
  2. select componente
  3.         , conjunto ,count(*)
  4. from basedatos/tabla
  5. where No_Empresa='5'
  6. GROUP BY componente
  7.         , conjunto ,count(*)
  8. order by conjunto
  9.  

 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



marisol_ylonen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Uso Del Count
« Respuesta #2 en: Miércoles 20 de Junio de 2007, 17:35 »
0
La intenté como propones pero no me funciono, me decía que estaba haciendo un uso indebido del count. La modifiqué y la escribí así:
select count(componente) conjunto from basedatos/tabla where No_empresa='5'
GROUP BY stkomp order by stbgnr                                
Ejecución completa de sentencia SELECT                
Devuelve datos, pero no es lo que quiero. Cambia la columna conjunto por números que parecen autonuméricos pero no son porque se repiten varias veces. Esto es la parte final del resultado:
95
 98
 99
101
152
156
164
188
192
212
[size=109]El hombre no se rinde a los angeles ni a la muerte por entero salvo a través de la flaqueza de su débil voluntad. Edar A. Poe, "Ligeia".Joseph Glanville[/size]

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Uso Del Count
« Respuesta #3 en: Miércoles 20 de Junio de 2007, 18:08 »
0
Citar
me decía que estaba haciendo un uso indebido del count. La modifiqué y la escribí así:
select count(componente) conjunto from basedatos/tabla where No_empresa='5'

Pues al parecer esta algo raro porque aca en la consulta que te di , es que por cada diferente tipo de componente y conjunto el va a contar cuantos cumplen con esta condicion y por eso se hace el GROUP BY ya que el set de cada resultado lo va agrupando .... en sql server funcionaria perfectamente ... no se si habra un error u otra forma de hacerlo en as400 ummmmm aunque como es sentencia sql creo que no pero bueno....  :scream:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



marisol_ylonen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Uso Del Count
« Respuesta #4 en: Miércoles 20 de Junio de 2007, 18:36 »
0
SELECT componente, conjunto FROM basedatos/tabla WHERE empresa='5' order by conjunto                                                              
Ejecución completa de sentencia SELECT                              
Esta funciona bien, me da esto:
componente          conjunto        
MS0000L002       C922-XXX-01  
91121401           C922-XXX-01  
ES0000L001        C922-XXX-02  
MP000106           D258003125-02
1250520107.4     D258003125-02
1251010108.2     D258003125-02
1251251103        D258003125-02
1251355107.2     D258003125-02
1254488129        D258003125-02
ES43001004        D258003125-02
ES44001904        D258003125-02
ES43001804        D258003125-02
ES0000A0125      D258003125-02
1250520107.4     D258003559-01

No sé si se entienda bien lo que busco, por ejemplo, si llego a un registro en el formulario con el conjunto D258003125-02, me diga también cuántas piezas lleva ese conjunto y que en otra caja de texto me diga a qué conjunto pertenece:
No_parte(componente)       ES0000A0125
Conjunto                           D258003125-02
No_piezas del conjunto       10

A lo mejor haciendo una comparación por conjunto y si son iguales se sumen, pero no sé cómo hacerlo. Y es que aparte en el sistema están guardadas unas piezas que no se  fabrican, como componente empiezan con ES*, y en su descripción es Subensamble *. Cuando se muestre la información estos datos no deben aparecer tampoco en el numero de componentes por conjunto.

¡¡¡¡¡¡Ayúdenme por favor, me estoy desesperando!!!!!!!
[size=109]El hombre no se rinde a los angeles ni a la muerte por entero salvo a través de la flaqueza de su débil voluntad. Edar A. Poe, "Ligeia".Joseph Glanville[/size]

marisol_ylonen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Uso Del Count
« Respuesta #5 en: Jueves 21 de Junio de 2007, 00:58 »
0
Sigo peleándome con la misma consulta, intentando que me cuente los registros con el mismo número de conjunto. Intente esto pero me cambia el valor de la columna conjunto por 1
select conjunto, componente, count(*) from basedatos/tabla GROUP BY conjunto,
componente
Buscando en Internet me hallé un documento en una página de trucos de as400 que pone un case dentro del count, algo así
select biblioteca,  ---me imagino que es la base de datos-----
count(case when dbxAtr='PF' then dbxAtr end) as CountPF                                                        
Creen que pueda agregar un case que haga la comparación entre dos registros. Es decir, tengo registros con la columna "conjunto" en común, entonces hacer que compare esa columna y contar los que sean iguales en esa columna. Supongo que eso me daría la cantidad de piezas por componente.
Ayuda, por favor
[size=109]El hombre no se rinde a los angeles ni a la muerte por entero salvo a través de la flaqueza de su débil voluntad. Edar A. Poe, "Ligeia".Joseph Glanville[/size]

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Uso Del Count
« Respuesta #6 en: Sábado 23 de Junio de 2007, 04:59 »
0
hola,  :hola:

 :unsure:  perdon por meterme, nunca he trabajo con AS400 pero, tal vez crees que podrias porfa el ver si puedes hacer una copia de tu tabla del AS400 en Access (por ejemplo), es decir, todos los campos de la tabla, o los campos que deben estar involucrados, esos que mencionas son los únicos para lo que deseas formar la sql?. Y otra cosa (espero no pedir mucho) :P el que tal vez en Excel, hagas una estructura de como deberia ser la consulta, es decir, el resultado la forma como quisieses que saliesen los datos.

Lo que me preocupa es que las sintaxis SQL cambien a formas que uno no conozca por ser un tipo de Bd que al menos yo no he trabajado. Ojala pudieses hacer unas capturitas de pantalla de la tabla de la Bd e igual con un recuadro excel de como deberian venir los resultados de la SQL, hechandole una "mirada" a eso podria ayudar a visualizar mejor las cosas, tal vez.  :unsure:

Ya solucionaste este problema o aun esta presente?  :huh:
Si esto es Leído por accidente, induzca al vomito

marisol_ylonen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Uso Del Count
« Respuesta #7 en: Martes 26 de Junio de 2007, 01:07 »
0
Gracias por la ayuda, estoy muy feliz porque ya lo resolví :smartass: .
Es así:

select conjunto, count(distinct componente) from basedatos/tcomponentes where empresa='5' GROUP BY conjunto

Y creo que tiene lógica, contar los distintos componentes por conjunto.
Ahora el problema es cuando la meto en una consulta donde ya se incluya todo lo que necesito, pero ahora creo que podría resolverlo -no descarto ayuda, porque me podría pasar lo mismo con esta que me costó tanto trabajo-
Lo siento, no puedo poner la información que me pides, pero adjunto un archivo con la información que quiero obtener a partir de las consultas, lo que me falta se genera a partir de esto pero no lo puedo hacer hasta que tenga lo de los componentes.

select stfirm, stkomp, tebez1, stbgnr, lslanr, temagr, lslgbe, count
(distinct stkomp) from rhdbd_16/ strus, teils, lgbs where strus.stko
mp=teils.tetenr and teils.temagr="ASOX" and lgbs.lslanr="CO"        
GROUP BY stbgnr                                                    

La información que va en el archivo, la obtuve antes de tratar de incluir el count

Una vez más: muchas gracias :D
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]El hombre no se rinde a los angeles ni a la muerte por entero salvo a través de la flaqueza de su débil voluntad. Edar A. Poe, "Ligeia".Joseph Glanville[/size]