Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: N4X en 3 Febrero 2010, 16:11 pm



Título: 2 join en una misma tabla a un mismo campo
Publicado por: N4X en 3 Febrero 2010, 16:11 pm
bueno.. como no vengo yo a dar problemas ....

Tengo una tabla de comentarios que guarda entre otras cosas la id del autor y la id del moderador que acepta dicho comentario...

bien yo hago un join a la tabla de usuarios para ver el real_name del usuario

pero no tengo idea como hacer el join a la tabla para ver también el real_name del moderador...

Código
  1. mysql> DESCRIBE web_news_comments;
  2. +------------+-----------------------+------+-----+-------------------+----------------+
  3. | FIELD      | TYPE                  | NULL | KEY | DEFAULT           | Extra       |
  4. +------------+-----------------------+------+-----+-------------------+----------------+
  5. | id_com     | INT(10) UNSIGNED      | NO   | PRI | NULL              | AUTO_INCREMENT |
  6. | id_new     | INT(10) UNSIGNED      | NO   | MUL | NULL              |       |
  7. | autor      | mediumint(8) UNSIGNED | NO   | MUL | NULL              |       |
  8. | comentario | VARCHAR(255)          | NO   |     | NULL              |       |
  9. | hora       | TIMESTAMP             | NO   |     | CURRENT_TIMESTAMP |       |
  10. | id_mod     | mediumint(8) UNSIGNED | YES  | MUL | NULL              |       |
  11. +------------+-----------------------+------+-----+-------------------+----------------+

y la consulta que tengo ahora es:

Código
  1. mysql> SELECT c.id_com AS id, m.real_name AS autor, c.comentario, c.hora, m.REAL
  2. _name AS id_mod FROM web_news_comments c, smf_members m WHERE id_new = 14 AND id_mod IS no
  3. t NULL AND c.autor = m.id_member;
  4. +----+-------+------------+---------------------+-----------+
  5. | id | autor | comentario | hora                | id_mod |
  6. +----+-------+------------+---------------------+-----------+
  7. |  9 | MOD   | asdas      | 2010-02-03 15:42:06 | MOD       |
  8. +----+-------+------------+---------------------+-----------+
  9. 1 ROW IN SET (0.00 sec)

como es normal me saca en autor e id_mod el mismo nombre cuando son distintos.. solo que no he sabido seguirlo...

pd. la tabla smf_members es muy larga pero por decir algo seria

id - login_name - real_name

saludos
nax


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ssccaann43 © en 3 Febrero 2010, 16:25 pm
Presumo que el real_name del usuario y el real_name del moderador provienen de 2 tablas distintas... Por tal motivo puedes hacer lo siguiente...

Ejecutas la consulta donde listas inicialmente a los usuarios. (Creas una vista)

luego ejecutas otra consulta donde listas a los moderadores. (Creas una vista)

y por ultimo un UNION...! (Creas la última vista con las 2 vistas anteriores)

Espero me comprendas...! Es lo que yo haría y no me complico tanto la vida...!


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: N4X en 3 Febrero 2010, 17:11 pm
misma tabla mismo campo no hay mas de lo que he listado


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ssccaann43 © en 3 Febrero 2010, 18:08 pm
A ver, ve si esto funciona...

Código
  1. SELECT C.id_com,m.real_name AS autor,c.comentario, c.hora,
  2. (SELECT DISTINCT m.real_name FROM m WHERE m.id_member=c.id_mod) AS Nombre_mod FROM web_news_comments C,
  3. smf_members m WHERE id_new = 14 AND c.autor = m.id_member;
  4.  


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: N4X en 3 Febrero 2010, 18:15 pm
le he agregado dos cosillas porque daba error en la tabla pero funciona perfectamente gracias

query
Código
  1. SELECT C.id_com,m.real_name AS autor,c.comentario, c.hora,
  2. (SELECT DISTINCT m.real_name FROM smf_members m WHERE m.id_member=c.id_mod) AS Nombre_mod FROM web_news_comments c,
  3. smf_members m WHERE id_new = 14 AND c.autor = m.id_member AND c.id_mod IS NOT NULL;

salida:

Código
  1. +--------+-------+------------+---------------------+------------+
  2. | id_com | autor | comentario | hora                | Nombre_mod |
  3. +--------+-------+------------+---------------------+------------+
  4. |      9 | MOD   | asdas      | 2010-02-03 15:42:06 | global     |
  5. +--------+-------+------------+---------------------+------------+
  6. 1 ROW IN SET (0.00 sec)


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ssccaann43 © en 3 Febrero 2010, 18:17 pm
De nada, cualquier duda postea...!


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ^Tifa^ en 3 Febrero 2010, 21:47 pm
Lol otra vez llegue tarde  :xD   :xD   :xD 

Es que estoy en examenes y eso me limita muchisimo el tiempo  :-\

Pero me alegro que otros usuarios esten aportando a la causa  ;D


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: :ohk<any> en 3 Febrero 2010, 21:52 pm
Lol otra vez llegue tarde  :xD   :xD   :xD 

Es que estoy en examenes y eso me limita muchisimo el tiempo  :-\

Pero me alegro que otros usuarios esten aportando a la causa  ;D

Clonemos a ^TiFa^  :xD :xD


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ssccaann43 © en 4 Febrero 2010, 00:48 am
Jajaja... No importa si yo me quedo con el clon?


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ^Tifa^ en 4 Febrero 2010, 15:16 pm
Pero que es esto de clonarme   :huh: 


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: :ohk<any> en 4 Febrero 2010, 15:37 pm
Pero que es esto de clonarme   :huh: 

Para que un clon se encarge de contestar en el foro y el otro siga con su vida  :xD


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ssccaann43 © en 4 Febrero 2010, 15:50 pm
Jajajajaja... Entonces no quiero al Clon...! ::silbar::


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: eagi_belo en 27 Abril 2010, 01:51 am
hola! buen Dia!!

Tengo un problema con una consulta  espero y me puedan ayudar


tengo una tabla llamada meta
y tiene como campos: id(autoincrementable), item,field,text.

Pero quiero hacer una consulta tomando dos valores del mismo campo.


item        field        text
23            43          teoria
23            44          12

24           43         teoria
24           44            11

54           43           teoria
54           44            11



como puedo sacar el item (54) si yo le envio el text:11 y esta por default en la consulta text:teoria.


bueno no se si me di a entender.... pero quiero saber como puedo consultar el item  de una consulta que involucre a los dos  valores de text  :huh:

Espero y me peudan ayudarr Gracias!!


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ^Tifa^ en 27 Abril 2010, 18:52 pm
eagi_belo No se te entiende bien, pero lo que yo entendi fue que quieres sacar el item 54 y los valores que concuerden con el item(54) y que esten en el campo teoria????

Usando tu modelo:

Citar
item        field        text
23            43          teoria
23            44          12

24           43         teoria
24           44            11

54           43           teoria
54           44            11

Algo como lo siguiente:

Código
  1.  
  2. SELECT item, text FROM TABLA WHERE item = 54;
  3.  
  4.  

Te lanzaria como resultado mas o menos algo asi:

Citar
item            text

54                   teoria
54                  11


Título: Re: 2 join en una misma tabla a un mismo campo
Publicado por: ssccaann43 © en 27 Abril 2010, 20:04 pm
como puedo sacar el item (54) si yo le envio el text:11 y esta por default en la consulta text:teoria.

bueno no se si me di a entender.... pero quiero saber como puedo consultar el item  de una consulta que involucre a los dos  valores de text  :huh:

Espero y me peudan ayudarr Gracias!!

Querrá algo así...
Código
  1.  
  2. SELECT item, text FROM TABLA WHERE item = 54 AND (text='teoria' AND text='11');
  3.  
  4.