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

Se puede hacer Inner Join de una sola tabla??

Estas en el tema de Se puede hacer Inner Join de una sola tabla?? en el foro de Mysql en Foros del Web. Buenos días, en mi trabajo tengo echa una select tal que asi: SELECT id,id_padre FROM tabla1 WHERE user_asignado = '152' AND usuario_alta <> usuario_resp AND ...
  #1 (permalink)  
Antiguo 10/08/2010, 03:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 17
Antigüedad: 15 años, 2 meses
Puntos: 0
Se puede hacer Inner Join de una sola tabla??

Buenos días,

en mi trabajo tengo echa una select tal que asi:

SELECT id,id_padre
FROM tabla1
WHERE user_asignado = '152'
AND usuario_alta <> usuario_resp
AND id_padre in
(
SELECT id FROM tabla1
WHERE usuario_resp = '152'
AND estado <> 7
AND estado <> 5
AND id_padre is null
)

y me han recomendado que optimice la select (que es de una sola tabla) utilizando inner join. En el manual de mysql no encuentro nada concreto sobre este caso.

alguien puede aconsejarme??


//explicacion de la tabla: En ella se guardan las dudas y soluciones de los usuarios. La forma en que lo hace es que cada entrada nueva que se crea en la BBDD recibe un identificador. Si es una respuesta el identificador_p no es nulo. En caso contrario es una nueva duda.


gracias.

Última edición por dajomaj; 10/08/2010 a las 04:20
  #2 (permalink)  
Antiguo 10/08/2010, 06:52
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Se puede hacer Inner Join de una sola tabla??

Si se puede dajomaj.

prueba esto
Código MySQL:
Ver original
  1. SELECT id,
  2.             id_padre
  3. FROM tabla1 t1
  4. (
  5.   SELECT id
  6.   FROM tabla1
  7.   WHERE usuario_resp = '152'
  8.   AND estado <> 7
  9.   AND estado <> 5
  10.   AND id_padre is null
  11. ) t2
  12. ON t1.id=t2.id
  13. WHERE t1.user_asignado = '152'
  14. AND t1.usuario_alta <> usuario_resp;

No la he probado
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/08/2010, 14:20
 
Fecha de Ingreso: diciembre-2001
Ubicación: Morelia, México.
Mensajes: 312
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Se puede hacer Inner Join de una sola tabla??

Podrías explicarnos cual es la idea concreta de esa consulta, que obtienes y para que lo obtienes?.. a menos de que la opción anterior te haya servido, según yo una tabla no puede hacer referencia en una consulta a sí misma.
  #4 (permalink)  
Antiguo 11/08/2010, 04:01
 
Fecha de Ingreso: febrero-2009
Mensajes: 17
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Se puede hacer Inner Join de una sola tabla??

hola CBBzun,

resulta que todo esto está montado de la siguiente forma:

es una tabla donde se van registrando todas las dudas de los usuarios en forma de registro y en campo "registro_padre" está en null. Cuando uno de los técnicos contesta a una duda se crea un registro nuevo pero con el "registro_padre" relleno con el identificador del registro al cual se responde. (Yo creo que es la misma estructura que un foro).

El caso es que imaginate que tu eres un técnico y tienes asignados 30 registros de usuarios que quieren preguntarte algo. A lo largo de la semana contestas 17 de ellos, y otros 10 los dejas a la espera porque no te sabes la respuesta y estas investigandola.

Ahora te quieres hacer una aplicación (en php por ejemplo) que te muestre en un informe estos datos:

- todos los registros que tienes tu asignados pero cuya última entrada no sea tuya.

pues yo hice la consulta de arriba como solución a lo que te comento pero tardaba demasiado y el tema del inner join siempre pensé que era para 2 o mas tablas.

//por si no queda claro te pongo otro ejemplo:

- imaginate que quieres hacer una aplicacion que te muestre los id de todos los mensajes que has publicado tu en este foro pero cuya ultima respuesta no sea tuya y que su estado no sea cerrado o solucionado.

espero haberme explicado. Y respecto al inner join, muchas gracias huesos52.

Voy a probar ahora mismo.

sludos,
dajomaj.

Etiquetas: join, tablas
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 18:20.