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

como evitar valores duplicados en una consulta?

Estas en el tema de como evitar valores duplicados en una consulta? en el foro de Bases de Datos General en Foros del Web. Hola a todos! este es mi primer post al grupo, espero puedan ayudarme! la consulta es la siguiente... tengo dos tablas, una de clientes y ...
  #1 (permalink)  
Antiguo 27/01/2005, 09:21
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 9 meses
Puntos: 0
Pregunta como evitar valores duplicados en una consulta?

Hola a todos! este es mi primer post al grupo, espero puedan ayudarme!

la consulta es la siguiente...

tengo dos tablas, una de clientes y otra de categorias
en la tabla de clientes hay un campo llamado id_categoria que justamente uso para corresponder una categoria con su descripcion.

tengo que realizar un buscardor en el que se presente en el formulario de busqueda, en una lista de seleccion, las categorias que solamente estan siendo "utilizadas" en la tabla de clientes.

Eso no seria problema si no fuese porque obviamente varios clientes pueden ser de la misma categoria, por lo que si hago un select de id_categoria en la tabla clientes me presentaria las categorias y en muchos casos una misma categoria apareceria repetida varias veces.

Como puedo hacer para obtener el listado de categorias que hay en la tabla clientes sin que se repita ningun id_categoria?

that is the cuestion jeje...

Estoy programando el buscador en php y uso mysql. No se si puedo hacer directamente todo con una sola sentencia de mysql o tendre que hacer una funcioncita que me devuelva el listado sin duplicados....

desde ya les agradezco mucho, espero se haya entendido lo que queria consultar!
  #2 (permalink)  
Antiguo 27/01/2005, 10:20
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Mi conocimiento de MySql no es muy bueno, por lo que no sé el uso exacto de Distinct y si te serviría, pero lo que seguramente funcione es lo siguiente:

SELECT Categorias.IdCategoria, Categorias.NombreCategoria
FROM Clientes INNER JOIN Categorias
ON Clientes.IdCategoria = Categorias.IdCategoria
GROUP BY Categorias.IdCategoria, Categorias.NombreCategoria


Un saludo
  #3 (permalink)  
Antiguo 27/01/2005, 12:45
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 3 meses
Puntos: 1
Exclamación Un poco más de información

Creo que la respuesta que te han dado está bien encaminada pero no es correcta del todo. Podrías decirnos bien como son las tablas?? Es decir, las sentencias de create table cliente (.....)
  #4 (permalink)  
Antiguo 27/01/2005, 13:51
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 1 mes
Puntos: 3
Creo que con la respuesta de teri basta, incluso puede que no sea necesario el Grup By al final, ya que (si entiendo bien) Diegolfds sólo quiere generar una consulta para 2 tablas....


(o no???)
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #5 (permalink)  
Antiguo 27/01/2005, 13:52
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 9 meses
Puntos: 0
Sonrisa

Gracias Teri! probare con eso... hay un par de cosas que mostras que no use aun de mysql asi que investigare...

gracias caerolus! fijate si esto te sirve, son tablitas sencillas, las demas se manejan con el idcliente por lo que no vienen al caso...

CREATE TABLE `clientes` (
`idcliente` tinyint(5) unsigned NOT NULL auto_increment,
`nombre` varchar(30) NOT NULL default '',
`idcurso` tinyint(2) unsigned NOT NULL default '0',
`cant_horas` char(3) default NULL,
`fecha_inicial` date default NULL,
PRIMARY KEY (`idcliente`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


CREATE TABLE `cursos` (
`idcurso` tinyint(2) unsigned NOT NULL auto_increment,
`descripcion` varchar(40) NOT NULL default '',
`nombre_corto` varchar(4) NOT NULL default '',
PRIMARY KEY (`idcurso`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;

INSERT INTO `cursos` (`idcurso`, `descripcion`, `nombre_corto`) VALUES (1, 'Operador en Aplicaciones Windows', 'OAW'),
(2, 'Diseñador Grafico', 'DG'),
(3, 'Diseñador Web', 'DW'),
(4, 'Armado y Reparacion de PC', 'AR'),
(5, 'Redes Informaticas', 'RE');

Basicamente necesitaria obtener los idcurso de los cursos que esten siendo usados en la tabla clientes asi como tb la descripcion en la misma consulta...

tenes idea como puede hacerse?

Muchas gracias!
  #6 (permalink)  
Antiguo 29/01/2005, 06:27
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 3 meses
Puntos: 1
Resuelto

Hola, perdón por no haber contestao antes
La consulta que tienes que hacer es esta:

select cursos.idcurso, cursos.descripcion from clientes, cursos where clientes.idcurso = cursos.idcurso group by cursos.idcurso;

Si quieres saber también cuántos clientes están en cada curso, haz esto:

select count(*),cursos.idcurso, cursos.descripcion from clientes, cursos where clientes.idcurso = cursos.idcurso group by cursos.idcurso;

Nada más. Saludos
__________________
Mi página personal: Julián Urbano

Última edición por caerolus; 02/02/2005 a las 07:46
  #7 (permalink)  
Antiguo 29/01/2005, 08:55
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 9 meses
Puntos: 0
Gracias chicos!! ya pude hacerlo!!

funciono de maravillas!!!!

espero poder retribuirles al favor algun dia!!!

nuevamente! gracias!!
  #8 (permalink)  
Antiguo 02/02/2005, 14:32
 
Fecha de Ingreso: enero-2005
Mensajes: 27
Antigüedad: 19 años, 10 meses
Puntos: 0
Alguien Sabe Como Seria Con Access Y Asp ? De Esta Forma Me Lanza Un Error
  #9 (permalink)  
Antiguo 03/02/2005, 08:01
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 9 meses
Puntos: 0
skap, mejor seria que abras un tema nuevo y lo preguntes asi te aseguras que lo lean mas personas!!!

saludos!!
__________________
Diegote ::.

www.mmsolutions.com.ar
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 14:41.