Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ayuda urgente con select count(*)

Estas en el tema de Ayuda urgente con select count(*) en el foro de SQL Server en Foros del Web. Suponiendo que tengo una tabla de Articulos con los campos id, idmarca relacionada a una tabla de marcas con el campo idmarca con un select ...
  #1 (permalink)  
Antiguo 14/06/2010, 08:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 34
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda urgente con select count(*)

Suponiendo que tengo una tabla de Articulos con los campos id, idmarca
relacionada a una tabla de marcas con el campo idmarca

con un select idmarca from marcas saco cada uno de las marcas que existen

y con un select count(*) from Articulos saco el total de articulos que existen de todas las marcas

Yo lo que quiero es una consulta que me muestre el total de articulos que tiene cada marca

salu2 y gracias por la atencion!
  #2 (permalink)  
Antiguo 14/06/2010, 08:43
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda urgente con select count(*)

Código sql:
Ver original
  1. SELECT idmarca, COUNT(*) Total
  2. FROM Articulos
  3. GROUP BY idmarca
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 14/06/2010, 11:30
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda urgente con select count(*)

Siempre eh tenido problemas en hacer este tipo de consultas... Siguiendo con el ejemplo... en que modificaria la consulta si... quisiera saber los 3 primeros articulos... de cada marca, ordenados en order alfabetico...

Claro que podria ser... los 3 primeros articulos mas vendidos... pero con ese ejemplo yo creo que me podrian ayudar...

Saludos!!!
  #4 (permalink)  
Antiguo 14/06/2010, 12:18
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Información Respuesta: Ayuda urgente con select count(*)

Alguien una vez uso un TOP n en una subconsulta para hacer eso.
Esta subconsulta debe ir en el WHERE, algo asi:
Código SQL:
Ver original
  1. SELECT T1.*
  2. FROM tabla1 T1
  3. WHERE EXISTS(
  4.   SELECT TOP 3 campo2
  5.   FROM tabla1
  6.   WHERE campo1 = T1.campo1
  7.   GROUP BY campo2
  8.   ORDER BY campo2
  9. )
Nunca lo probe, pero parecia que funcionaba.
Yo ese tipo de problemas lo soluciono con una subconsulta en un join, donde la condicion seria que los campos no sean iguales. Bueno, es largo de explicar.
Prueba de esa manera, y nos comentas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 14/06/2010, 13:47
 
Fecha de Ingreso: marzo-2010
Mensajes: 34
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda urgente con select count(*)

Muchísimas gracias flaviovich por la pronta y correcta atención, me funciono de maravilla

Namas que quizas hize mal en plantear mal mi problema
yo sabia que la consulta era muy sencilla por eso quize explicar mis tablas con peras y manzanas (bueno articulos y marcas hehe)

Pero leyendo tu firma personal, creo que lo mejor sera plantear bien mi problema

Tengo las siguientes tablas (solo pondre los campos que me interesan):

PROSPECTOS: idusuario

USUARIOS: idusuario, idtrabajador

TRABAJADORES: idtrabajador, nombres, paterno, materno

Tu consulta me funciono perfectamente, solo que en lugar de que me muestre el codigo, quiero que me muestre los nombres.

Para esto quize implementar los joins asi:
Código SQL:
Ver original
  1. SELECT  PERSONAL.NOMBRES, PERSONAL.PATERNO,PERSONAL.MATERNO, COUNT(*) TOTAL
  2. FROM PROSPECTOS
  3. INNER JOIN USUARIOS ON PROSPECTOS.US_CODIGO=USUARIOS.US_CODIGO
  4. INNER JOIN PERSONAL ON PERSONAL.PER_CODIGO=USUARIOS.PER_CODIGO
  5. GROUP BY PROSPECTOS.US_CODIGO
pero me marca el siguiente error:
Column 'PERSONAL.NOMBRES' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
  #6 (permalink)  
Antiguo 14/06/2010, 14:12
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda urgente con select count(*)

A ver Prueba con esto.... si creo que funciona... jejeje
Código SQL:
Ver original
  1. SELECT  (PERSONAL.NOMBRES +' '+ PERSONAL.PATERNO +' '+PERSONAL.MATERNO) PERSONA, COUNT(*) TOTAL
  2. FROM PROSPECTOS
  3. INNER JOIN USUARIOS ON PROSPECTOS.US_CODIGO=USUARIOS.US_CODIGO
  4. INNER JOIN PERSONAL ON PERSONAL.PER_CODIGO=USUARIOS.PER_CODIGO
  5. GROUP BY (PERSONAL.NOMBRES +' '+ PERSONAL.PATERNO +' '+PERSONAL.MATERNO)
  #7 (permalink)  
Antiguo 14/06/2010, 14:20
 
Fecha de Ingreso: marzo-2010
Mensajes: 34
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda urgente con select count(*)

MUCHISIMAS GRACIAS ROMMEL!
ME FUNCIONO PERFECTAMENTE

creo que tendre que ponerme a estudiar sobre el group by, para poder entender bien como funciona

salu2 a todos!
  #8 (permalink)  
Antiguo 14/06/2010, 14:33
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda urgente con select count(*)

Exitos! amigo... cualquier cosa no dudes en poner tu tema...
  #9 (permalink)  
Antiguo 14/06/2010, 14:43
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Exclamación Respuesta: Ayuda urgente con select count(*)

Cita:
Iniciado por -rommel_ Ver Mensaje
A ver Prueba con esto.... si creo que funciona... jejeje
Código SQL:
Ver original
  1. SELECT  (PERSONAL.NOMBRES +' '+ PERSONAL.PATERNO +' '+PERSONAL.MATERNO) PERSONA, COUNT(*) TOTAL
  2. FROM PROSPECTOS
  3. INNER JOIN USUARIOS ON PROSPECTOS.US_CODIGO=USUARIOS.US_CODIGO
  4. INNER JOIN PERSONAL ON PERSONAL.PER_CODIGO=USUARIOS.PER_CODIGO
  5. GROUP BY (PERSONAL.NOMBRES +' '+ PERSONAL.PATERNO +' '+PERSONAL.MATERNO)
Solo unas observaciones:
1. En este caso los parentesis estan demas.
2. Se recomienda separar los signos "=" entre espacios en blanco.
3. Es mas comodo usar alias
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #10 (permalink)  
Antiguo 14/06/2010, 14:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda urgente con select count(*)

Creo que la separacion de SIGNOS, aplica para todos (+, -, /, *, =)
  #11 (permalink)  
Antiguo 14/06/2010, 15:02
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda urgente con select count(*)

Bueno si.. eso si lo tengo bien claro, es mas ordenado, incluso si tabuleamos... y comentamos cada parte de la consulta... Solo estaba tomando el codigo que el habia hecho... asi el lo entendia perfectamente... ya ya no me regañen :(
  #12 (permalink)  
Antiguo 14/06/2010, 16:02
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda urgente con select count(*)

Amigo -rommel-, usted sabe que se le estima, saludos

Etiquetas: count, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.