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

evitar repetir registro

Estas en el tema de evitar repetir registro en el foro de Bases de Datos General en Foros del Web. Hola a todos/as. Tengo dos tablas: categorias y subcategorias. categoria: idcat nombrecat subcategoria idsub nombresub catid----que es la categoria a la que pertenece Ahora quiero ...
  #1 (permalink)  
Antiguo 03/09/2008, 02:59
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
evitar repetir registro

Hola a todos/as. Tengo dos tablas: categorias y subcategorias.

categoria:

idcat
nombrecat

subcategoria

idsub
nombresub
catid----que es la categoria a la que pertenece

Ahora quiero sacar las categorias que tienen subcategorias asociadas. así pues hago esta consulta:

Código PHP:
SELECT  DISTINCT *

                
FROM         categorias
                
                INNER JOIN    subcategorias

                ON            idcat
catid
                
                

                ORDER BY    nombrecat ASC 
la consulta la hace. supongamos tres categorías que tienen asociadas subcategorias. las categorías serían LIBROS, DOCUMENTOS Y PAPELERIA. LIBROS Y DOCUMENTOS sólamente tienen una subcategoria asociada, es decir, en la tabla subcategorias solo hay un registro asociado a esa categoria. el único problema es que si la categoría PAPELERIA tiene dos subcategorias en la tabla subcategorias, tales como BOLIGRAFOS y FOLIOS al hacer la consulta me saca esto:

LIBROS
DOCUMENTOS
PAPELERIA
PAPELERIA

es decir, si la categoria tiene asociadas más de una subcategorias pues me muestra tantas veces esa categoria como subcategorias tenga asociadas. alguna idea de como solucionarlo?
  #2 (permalink)  
Antiguo 03/09/2008, 03:31
 
Fecha de Ingreso: septiembre-2008
Mensajes: 13
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: evitar repetir registro

Prueba quitando el ORDER BY y usa el GROUP BY
  #3 (permalink)  
Antiguo 03/09/2008, 04:14
Avatar de Simbelmyne  
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: evitar repetir registro

Hola estibaliz2006, no entiendo muy bien la finalidad de tu consulta; pero lo que comentas deseas hacer, yo probaria utilizando ya sea un 'left join' de manera que

Código:
SELECT  DISTINCT *
                FROM         categorias                
                LEFT JOIN    subcategorias
                ON            idcat= catid            
                ORDER BY    nombrecat ASC

O de otra manera con una subconsulta:

Código:
SELECT * 
FROM categorias
WHERE categoriasid IN (SELECT categoriasid FROM subcategorias)
Donde categoriasid es la primary key de tu tabla...

Espero que te sea de utilidad, comenta si te funcionó
  #4 (permalink)  
Antiguo 03/09/2008, 08:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: evitar repetir registro

Tema trasladado a Bases de Datos.
  #5 (permalink)  
Antiguo 04/09/2008, 02:19
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: evitar repetir registro

la solución aportada por GOL3M dio resultado. gracias por todo
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 04:53.