Título: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Leguim en 17 Octubre 2019, 19:39 pm Buenos días
hace 1 mes había publicado un tema donde preguntaba como podía hacer más de un "INNER JOIN" en una misma consulta... Una de las respuesta que recibí me había servido ya que no me mostraban errores, ni ninguna advertencia pero al testearla dicha consulta no me arroja resultados.. Código
Tema anterior: https://foro.elhacker.net/desarrollo_web/pregunta_inner_join_de_dos_campos-t499302.0.html;msg2204406 (https://foro.elhacker.net/desarrollo_web/pregunta_inner_join_de_dos_campos-t499302.0.html;msg2204406) Estoy completamente seguro que el problema esta en el INNER JOIN ya que si pruebo la misma consulta quitando algunos de los dos que tengo, es decir que sólo me quede con un solo inner join va a funcionar pero ya cuando agrego dos o más ya no va a traer resultados. Gracias.... Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Carloswaldo en 17 Octubre 2019, 20:12 pm No entiendo la lógica de tu consulta. Veamos, tienes 2 tablas: usuarios y notificaciones, ¿qué quieres sacar en la consulta? Porque lo que yo entiendo es "sacar todas las notificaciones cuyo usuario sea el emisor y también sea el usuario (?), Y además tenga un id de notificación específico" ¿Hay un conjunto de datos que coincida con las condiciones? ¿Cuál es el resultado esperado? ¿Tienes un set de datos de ejemplo?
Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Leguim en 17 Octubre 2019, 20:49 pm No, básicamente la idea era que mostrar una notificación dependiendo su id (busca por id_notification) una vez que encuentra dicha notificación con esa id intento que me devuelva todos los resultados de dicha notificación...
Eso igual creo que ya estaba claro.. ahora id_emitter y id_user estoy tratando de hacer un INNER JOIN en ambas (nunca me acuerdo como se llama esto, si "entrelazar" o nose como se dice, no me acuerdo) bueno hacer eso dos veces, pero para esto: imaginemos que id_user es el id 1 y id_emitter es el id 2 // tabla users sería 1. Miguel 2. Juan para el momento en que yo imprima el dato por pantalla $resultados[0]['name'] => imagino que va a imprimir el nombre de usuario con la id 1 pero ahora que son dos datos con el INNER JOIN que apuntan a U.id_user (id_emitter, y justamente id_user pero de la tabla notifications no de la tabla users) Ahora que son dos, imagino que se podrían imprimir así: $resultados[0][0]['name'] => Ramon $resultados[0][1]['name'] => Miguel Realmente no estoy seguro que esto funcione así, pero bueno quería que se entendiera que es lo que quería hacer aunque nose si me explique correctamente. No, básicamente la idea era que mostrar una notificación dependiendo su id (busca por id_notification) una vez que encuentra dicha notificación con esa id intento que me devuelva todos los resultados de dicha notificación... Eso igual creo que ya estaba claro.. ahora id_emitter y id_user estoy tratando de hacer un INNER JOIN en ambas (nunca me acuerdo como se llama esto, si "entrelazar" o nose como se dice, no me acuerdo) bueno hacer eso dos veces, pero para esto: imaginemos que id_user es el id 1 y id_emitter es el id 2 // tabla users sería 1. Miguel 2. Juan para el momento en que yo imprima el dato por pantalla $resultados[0]['name'] => imagino que va a imprimir el nombre de usuario con la id 1 pero ahora que son dos datos con el INNER JOIN que apuntan a U.id_user (id_emitter, y justamente id_user pero de la tabla notifications no de la tabla users) Ahora que son dos, imagino que se podrían imprimir así: $resultados[0][0]['name'] => Ramon $resultados[0][1]['name'] => Miguel Realmente no estoy seguro que esto funcione así, pero bueno quería que se entendiera que es lo que quería hacer aunque nose si me explique correctamente. Edit: Para meterte en contexto este sería otro ejemplo de un sistema de tickets Código
Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Carloswaldo en 17 Octubre 2019, 22:57 pm Estoy tratando de entender bien el asunto y me he ido a leer tus otros temas. Tengo la impresión de que estás confundiendo un poco la funcionalidad de un INNER JOIN dentro de una consulta.
Tabla usuarios id_user int name text Tabla notificaciones id_notification int id_user int texto text Teniendo los siguientes datos: usuarios Código: id_user | name ---------+-------- 1 | Carlos 2 | Miguel 3 | Juan notificaciones Código: id_notificacion | id_user | texto -----------------+---------+---------------------- 1 | 2 | problema 2 | 2 | problema solucionado 3 | 1 | advertencia 4 | 3 | nota 5 | 3 | otra nota Si yo quiero sacar los datos de todas las notificaciones con los nombres de sus respectivos usuarios: Código
Código: id_notificacion | name | texto -----------------+--------+---------------------- 3 | Carlos | advertencia 1 | Miguel | problema 2 | Miguel | problema solucionado 4 | Juan | nota 5 | Juan | otra nota Las 2 tablas tienen una relación entre sí y el INNER JOIN me sirve para decirle al motor de base de datos cúal es el campo que constituye la relación, en este caso el id del usuario. Si yo quiero LIMITAR los resultados de mi consulta, me valdré de una condición. Digamos que solo quiero sacar las notificaciones de Juan: Código
Código: id_notificacion | name | texto -----------------+------+----------- 4 | Juan | nota 5 | Juan | otra nota O que quiero sacar las notificaciones de Juan y de Carlos: Código
Código: id_notificacion | name | texto -----------------+--------+------------- 3 | Carlos | advertencia 4 | Juan | nota 5 | Juan | otra nota Ya no necesito agregar o modificar nada de la condición del INNER JOIN porque la relación ya está hecha. Ahora, veo que tienes un campo id_emitter, ¿para qué es este? Es posible que haya otro campo en notificaciones que también guarde un id de usuario, pero si haces esto: Código
le estás diciendo que los datos que saque de la tabla usuarios tienen que ser de los que coincidan con mi id de usuario y (AND) al mismo tiempo tiene que coincidir con lo que haya en id_emitter, lo cual no termino de entender. Para poder armar una consulta lo que primero que tienes que saber es ¿Qué resultado deseo obtener?, eso es lo que te pregunté y aún quiero saber. ¿Qué es lo que deseas obtener? (Olvidándose un rato de lo que luego vayas a hacer en php o cualquier lenguaje de programación que estés utilizando, que en realidad no tiene importancia hasta que saques el resultado correcto de tu consulta) En la última consulta ¿Qué es "id_adm"? Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Leguim en 17 Octubre 2019, 23:56 pm Creo que me confundí muchisimo con INNER JOIN
pensaba que si digamos yo tengo.. un comentario.... id_comment, id_user, text 1, 1, cualquier mensaje y la tabla users sería id_user, nombre 1, miguel la idea era poder acceder a el nombre del autor del comentario con la consulta usando INNER JOIN es decir que cuando ponga.. Código
Era esto lo que esperaba que haga la consulta, pero lógicamente hacerlo dos veces, según hasta donde pude entender + lo que encontré en youtube (que también me cuesta entender) respecto a esto es que el inner join sería no igual, pero si similar a un where.. pensaba que esto lo que hacía era como "conectar" o "entrelazar" datos de una tabla a otra.. id_adm sería id_admin, como dije que era un sistema de tickets digamos un usuario podría rellenar un formulario con una duda y luego podría ver quien le contesto su duda gracias al id_adm (id_admin)... Me quede en un bloqueo, no consigo entender... Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Leguim en 18 Octubre 2019, 04:48 am Para hacerla sencilla hice este diagrama.
(https://i.ibb.co/XYVSwSp/capturada.jpg) La idea es pasar esto que está en este diagrama a una consulta SQL que es lo que intento hacer pero bueno como ya dije antes... no devuelve el resultado. Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Carloswaldo en 18 Octubre 2019, 07:11 am Veamos...
Código
¿Es eso lo que quieres lograr? Espero esta vez haber entendido bien. (Tienes que hacer 2 INNER JOINs hacia la misma tabla, para diferenciarlas le pones alias diferentes) Título: Re: [Problema]: Consulta SQL INNER JOIN 2 campos Publicado por: Leguim en 19 Octubre 2019, 00:33 am ¡Te lo agradezco muchisimo, me sirvio!
|