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

poder sacar datos relacionados (no tablas relacionadas)

Estas en el tema de poder sacar datos relacionados (no tablas relacionadas) en el foro de Mysql en Foros del Web. Hola, quisiera saber si a alguien se le ocurre cómo puedo hacer en una sola consulta que me saque lo siguiente: Tengo id, id_parent, titulo, ...
  #1 (permalink)  
Antiguo 18/10/2011, 07:41
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 18 años, 5 meses
Puntos: 2
poder sacar datos relacionados (no tablas relacionadas)

Hola, quisiera saber si a alguien se le ocurre cómo puedo hacer en una sola consulta que me saque lo siguiente:

Tengo

id, id_parent, titulo, token
1, NULL, hola, hgjfhgf
2, 1, segundotitulo, NULL
3, 1, tercertitulo, NULL
4, NULL, estenoseimprime, oiswosw

Y lo que quiero es que entregando sólo el token hgjfhgf me devuelva el principal (id 1) y sus hijos (id_parent=1).

Por favor, lo que pregunto es 1 sola consulta con SOLO ese dato token.

Gracias anticipadas!
__________________
"Prefiero callar como un tonto, que hablar para confirmarlo"
Espectacular Portal en crecimiento: Artículos http://www.blorgia.com
  #2 (permalink)  
Antiguo 18/10/2011, 07:52
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, 5 meses
Puntos: 2658
Respuesta: poder sacar datos relacionados (no tablas relacionadas)

La consulta base sería mas o menos:
Código SQL:
Ver original
  1. SELECT DISTINCT T1.id, T1.id_parent, T1.titulo, T1.token
  2. FROM tabla T1 LEFT JOIN tabla T2 ON T1.id = T2.id_parent
Con la aclaración de que no sirve en Access por limitaciones del motor SQL.
__________________
¿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 18/10/2011, 07:59
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: poder sacar datos relacionados (no tablas relacionadas)

Hola jovendigital:

No me queda claro cuál es en si el problema... pero si entendí bien la consulta quedaría más o menos así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tuTabla (id INT, id_parent INT,
  2.     -> titulo VARCHAR(20), token VARCHAR(20));
  3. Query OK, 0 rows affected (0.11 sec)
  4.  
  5. mysql> INSERT INTO tuTabla VALUES (1, NULL, 'hola', 'hgjfhgf'),
  6.     -> (2, 1, 'segundotitulo', NULL),
  7.     -> (3, 1, 'tercertitulo', NULL),
  8.     -> (4, NULL, 'estenoseimprime', 'oiswosw');
  9. Query OK, 4 rows affected (0.03 sec)
  10. Records: 4  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> SELECT * FROM tuTabla;
  13. +------+-----------+-----------------+---------+
  14. | id   | id_parent | titulo          | token   |
  15. +------+-----------+-----------------+---------+
  16. |    1 |      NULL | hola            | hgjfhgf |
  17. |    2 |         1 | segundotitulo   | NULL    |
  18. |    3 |         1 | tercertitulo    | NULL    |
  19. |    4 |      NULL | estenoseimprime | oiswosw |
  20. +------+-----------+-----------------+---------+
  21. 4 rows in set (0.00 sec)
  22.  
  23. mysql> SELECT * FROM tuTabla T1 INNER JOIN
  24.     -> (SELECT id FROM tuTabla WHERE token = 'hgjfhgf' ) T2
  25.     -> ON T1.id = T2.id OR T1.id_parent = T2.id;
  26. +------+-----------+---------------+---------+------+
  27. | id   | id_parent | titulo        | token   | id   |
  28. +------+-----------+---------------+---------+------+
  29. |    1 |      NULL | hola          | hgjfhgf |    1 |
  30. |    2 |         1 | segundotitulo | NULL    |    1 |
  31. |    3 |         1 | tercertitulo  | NULL    |    1 |
  32. +------+-----------+---------------+---------+------+
  33. 3 rows in set (0.00 sec)

Dale un vistazo para ver si es lo que necesitas.

Saludos
Leo.

Etiquetas: sql
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 19:54.