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

Relacionar campos en una misma tabla

Estas en el tema de Relacionar campos en una misma tabla en el foro de Mysql en Foros del Web. Hola Amigos!!! ME estoy volviendo loco con una consulta Antes de juntar 2 tablas tenia esta consulta para relacionarlas @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original ...
  #1 (permalink)  
Antiguo 14/12/2011, 14:15
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Relacionar campos en una misma tabla

Hola Amigos!!!
ME estoy volviendo loco con una consulta
Antes de juntar 2 tablas tenia esta consulta para relacionarlas
Código MySQL:
Ver original
  1. SELECT * FROM subrubros INNER JOIN rubros ON subrubros.rubro_asoc=rubros.rub_id WHERE subrubro_id   LIKE '$nombre_subrubro%' OR subrubro_detalle  
  2.                                                                                                                     LIKE '$nombre_subrubro%'
Mi problema es que ahora necesite que estas tablas sean una sola pero igual necesito relacionar subrubro con rubro
como hago para relacionarlas siendo una sola tabla?
Saludos y muchas gracias por ayudar a este novato!!!
  #2 (permalink)  
Antiguo 14/12/2011, 14:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Relacionar campos en una misma tabla

Solamente necesitas definir una FK que apunte a la misma tabla. Es algo muy habitual, lo único que ese campo subrubro no debería ser NOT NULL sino NULL, para evitar una dependencia circular.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/12/2011, 14:48
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Relacionar campos en una misma tabla

Hola GRACIAS por contestar
Hice exactamente lo que me indicaste pero no lo puedo hacer funcionar
al unir las 2 tablas cambie el nombre de la tabla y sus campos y lo estoy haciendo de esta manera se que voy por el camino correcto pero me falta algo y no se que es
Código MySQL:
Ver original
  1. SELECT * FROM categorias c,categorias s WHERE  categoria_id LIKE '$nombre_subrubro%' OR categoria_detalle  LIKE '$nombre_subrubro%'
  2.                                         AND
  3.                                         c.categoria_asoc != 0
  4.                                         AND
  5.                                         c.categoria_asoc = s.cat_id
  6.                                                 ORDER BY categoria_id asc LIMIT 0, 10
y mi tablas es asi
+--------+--------------+-------------------+----------------+
| cat_id | categoria_id | categoria_detalle | categoria_asoc |
+--------+--------------+-------------------+----------------+
| 1 | 1 | mother | 0 |
| 5 | 2 | micros | 0 |
| 7 | 3 | 775 | 1 |
| 9 | 4 | intel | 5 |
| 11 | 5 | lalala | 1 |
| 13 | 6 | lolol | 5 |
| 15 | 7 | con wifi | 5 |
| 17 | 8 | caras | 1 |
+--------+--------------+-------------------+----------------+
8 rows in set (0.00 sec)
muchas gracias!!!
  #4 (permalink)  
Antiguo 14/12/2011, 15:28
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Relacionar campos en una misma tabla

Saludos

Actualmente que te esta retornando la consulta y cuales son los datos que esperas?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 14/12/2011, 18:04
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Relacionar campos en una misma tabla

hola como estas
lo que me dice es esto
#1052 - Column 'categoria_id' in where clause is ambiguous
saludos!!! y gracias
  #6 (permalink)  
Antiguo 15/12/2011, 07:15
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Relacionar campos en una misma tabla

Saludos

Debes indicarle a la columna categoria_id de que tabla lo deseas tomar. Aunque sean las mismas en esta caso debes realizarlo para no permitir ambiguedades, de igual manera con la columna categoria_detalle

Código MySQL:
Ver original
  1. SELECT * FROM categorias c,categorias s
  2. WHERE  c.categoria_id LIKE '$nombre_subrubro%'
  3. OR c.categoria_detalle  LIKE '$nombre_subrubro%'
  4. AND c.categoria_asoc != 0
  5. AND c.categoria_asoc = s.cat_id
  6. ORDER BY c.categoria_id asc LIMIT 0, 10
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #7 (permalink)  
Antiguo 15/12/2011, 07:26
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Relacionar campos en una misma tabla

Buenisimo gracias Nano_
ahora si me funciona perfectamente
pero tambien me surgio otro problema con la misma tabla
si por favor me podes ayudar te lo voy a agradecer mucho
tengo un listado de articulos y tengo que mostrarlos en una tabla junto con su categoria y su subcategoria
el inconveniente es que me muestra la categoria o la subcategoria y necesito los dos te muestro como lo estoy armando
Código MySQL:
Ver original
  1. SELECT  * FROM articulos A
  2. LEFT OUTER JOIN categorias R ON R.categoria_asoc  = 0 AND  A.categoria = R.cat_id  
  3. LEFT OUTER JOIN categorias S ON S.categoria_asoc != 0 AND  A.subcategoria = S.cat_id
como hago para diferenciar R.cat_id de S.cat_id para poder mostralo en pantalla?
lo estoy mostrando con php.
lo estoy mostrando asi /* echo $row ["cat_id"] */
saludos y Muchas gracias!!!

Última edición por tumbero_x; 15/12/2011 a las 07:47
  #8 (permalink)  
Antiguo 15/12/2011, 12:48
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Relacionar campos en una misma tabla

Saludos

Para ello podrias manejas alias por ejemplo y en php que no es tema que se deberia tratar en este foro llamas es al nombre del alias

Código MySQL:
Ver original
  1. SELECT  A.categorias as nombrecategoria,
  2.     R.cat_id as categoria, S.cat_id as subcategoria FROM articulos A
  3.     LEFT OUTER JOIN categorias R ON R.categoria_asoc  = 0 AND  A.categoria = R.cat_id  
  4.     LEFT OUTER JOIN categorias S ON S.categoria_asoc != 0 AND  A.subcategoria = S.cat_id
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #9 (permalink)  
Antiguo 15/12/2011, 13:04
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Relacionar campos en una misma tabla

Gracias por responder , pero me parece que el problema lo tengo con php
asi que me voy para ese foro a consultar
Saludos!!!

Etiquetas: campos, join, relacionar, select, tabla
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 16:52.