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

Como hacer esta consulta a la bd

Estas en el tema de Como hacer esta consulta a la bd en el foro de Bases de Datos General en Foros del Web. Amigos, Tengo una tabla de categorias, los cuales tambien tienen subcategorias y cuando hago la consulta me arrija asi: Categoria1 subcategoria1 Categoria 1 subcategoria2 y ...
  #1 (permalink)  
Antiguo 09/12/2008, 15:31
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta Como hacer esta consulta a la bd

Amigos,
Tengo una tabla de categorias, los cuales tambien tienen subcategorias y cuando hago la consulta me arrija asi:
Categoria1
subcategoria1
Categoria 1
subcategoria2

y lo que quiero es que si la subcategoria pertenece a la categoria 1 me aparezca asi:

Categoria1
subcategoria1
subcategroria2.... etc etc.

Como lo hago si lo tengo en una misma tabla?? deberia de separar las tablas?? poner una de categorias y otra de subcategorias?? o puedo clasificarlo haciendo un if??
  #2 (permalink)  
Antiguo 09/12/2008, 15:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Como hacer esta consulta a la bd

Deberías ser más especifico con la estructura de tu BDD. Si quieres tener una relación de categorías con sus respectivas subcategorias, lo más recomendable suele ser tener dos tablas independientes, y en la tabla de subcategorias hacer referencia a la categoría padre.
  #3 (permalink)  
Antiguo 09/12/2008, 15:51
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hacer esta consulta a la bd

me lo temia, es decir, tener una tabla para categoria
y tener otra para subcategorias que indique a que categoria pertenece???

mira yo tengo una tabla y dice lo siguiente:
id, categoria, titulo, descripcion, subcategoria, titulo, descripcion

y lo que quiero es a lo que me referia en mi pregunta anterior??

Categroia ALFA
subcategroia1 (que pertenece a la categoria ALFA)
subcategroia2 (que tambien pertenece a la categoria ALFA)

y no me aparece asi, lo unico que logro hacer es:
Categroia ALFA
subcategroia1 (que pertenece a la categoria ALFA)
Categroia ALFA
subcategroia2 (que tambien pertenece a la categoria ALFA)
  #4 (permalink)  
Antiguo 09/12/2008, 15:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como hacer esta consulta a la bd

Tema trasladado a Bases de Datos.
  #5 (permalink)  
Antiguo 09/12/2008, 16:12
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Como hacer esta consulta a la bd

Esto podría servirte:

Código sql:
Ver original
  1. DECLARE @TABLE TABLE( idcat INT, nomcat VARCHAR(10), idcatpadre INT)
  2. INSERT INTO @TABLE VALUES( 1, 'ALFA', NULL )
  3. INSERT INTO @TABLE VALUES( 2, 'Cat 1', 1 )
  4. INSERT INTO @TABLE VALUES( 3, 'Cat 2', 1 )
  5. INSERT INTO @TABLE VALUES( 4, 'BETA', NULL )
  6. INSERT INTO @TABLE VALUES( 5, 'Cat 3', 4 )
  7. INSERT INTO @TABLE VALUES( 6, 'Cat 4', 4 )
  8. INSERT INTO @TABLE VALUES( 7, 'Cat 5', 1 )
  9. INSERT INTO @TABLE VALUES( 8, 'Cat 6', 9)
  10. INSERT INTO @TABLE VALUES( 9, 'GAMMA', NULL )
  11.  
  12. SELECT idcat, nomcat, idcatpadre, idcol
  13. FROM(
  14.     SELECT  idcat, nomcat, idcatpadre = idcat, idcol = 1
  15.     FROM    @TABLE
  16.     WHERE   idcatpadre IS NULL
  17.     UNION
  18.     SELECT  idcat, nomcat, idcatpadre, idcol = 2
  19.     FROM    @TABLE
  20.     WHERE   idcatpadre IS NOT NULL
  21. ) X
  22. ORDER BY idcatpadre, idcol

Saludos.
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #6 (permalink)  
Antiguo 09/12/2008, 16:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hacer esta consulta a la bd

no entiendo eso??, ayudame porfa
mi bd es de mysql
  #7 (permalink)  
Antiguo 09/12/2008, 16:20
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hacer esta consulta a la bd

es decir mi consulta seria asi,

si la categoria de la subcategoria son iguales no me muestre la categoria sino solamente la subcategoria

me entendieron???
  #8 (permalink)  
Antiguo 09/12/2008, 16:34
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Como hacer esta consulta a la bd

Coloca unos datos de tu Base de datos para poder revisarlo.

El select que te mostre anteriormente es para SQL, hace lo siguiente:

1. Lista los datos de la tabla categoria que no son subategoria, coloca el campo de "categoria padre" en el campo de subcategoria, esto para poder ordenar luego.
2. Lista los datos de la tabla categoria que son subcategoria de alguna categoria.
3. A cada select le agrega una columna, para el resultado del primero "col = 1" y para el segundo "col =2 "
4. Une los resultados de ambos select mediante la clausula UNION.
5. Por ultimo ordena por la categoria padre y luego por la columna "col", esto para que ordene de la forma que deseas.

Saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
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 12:31.