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

esta consulta sql es posible?

Estas en el tema de esta consulta sql es posible? en el foro de Mysql en Foros del Web. estoy haciendo un chat así un poco cutroso con php y mysql y por ahora estoy un poco parado en un punto supongamos que tengo ...
  #1 (permalink)  
Antiguo 22/06/2013, 10:00
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
esta consulta sql es posible?

estoy haciendo un chat así un poco cutroso con php y mysql y por ahora estoy un poco parado en un punto

supongamos que tengo esta tabla
[CODE]
emisor-receptor-mensaje
1 2 mensaje1
2 1 mensaje2
1 3 mensaje3

ahora quiero obtener no todos los mensajes sino las distintas conversaciones abiertas con los usuarios

es posible una vez haya obtenido el 1-2 despreciar todos los restantes 1-2 y 2-1 a base de sql o ya tengo que tirar de php?

o almenos los restantes 1-2 y ya desprecio los inversos con php

Última edición por juanito1712; 22/06/2013 a las 10:09
  #2 (permalink)  
Antiguo 22/06/2013, 10:48
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: esta consulta sql es posible?

propbando me sale esto es como lo segundo que pedia
select * from chats where emisor=1 or receptor=1 group by emisor,receptor
pero alguien es capaz de sacar lo primero?
  #3 (permalink)  
Antiguo 24/06/2013, 07:57
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: esta consulta sql es posible?

Hola juanito1712:

No estoy seguro de si entendí bien lo que quieres obtener, si checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +--------+----------+----------+
  3. | emisor | receptor | mensaje  |
  4. +--------+----------+----------+
  5. |      1 |        2 | mensaje1 |
  6. |      2 |        1 | mensaje2 |
  7. |      1 |        3 | mensaje3 |
  8. |      3 |        2 | mensaje4 |
  9. +--------+----------+----------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT emisor, receptor FROM tabla T1
  13.     -> WHERE NOT EXISTS ( SELECT * FROM tabla T2
  14.     ->                    WHERE T1.emisor = T2.receptor AND
  15.     ->                          T1.receptor = T2.emisor AND
  16.     ->                          T2.emisor < T2.receptor);
  17. +--------+----------+
  18. | emisor | receptor |
  19. +--------+----------+
  20. |      1 |        2 |
  21. |      1 |        3 |
  22. |      3 |        2 |
  23. +--------+----------+
  24. 3 rows in set (0.00 sec)

Observa que la consulta desaparece el segundo registro (emisor = 2, receptor = 1) pues esta es una combinación que ya existe), dale un vistazo para ver si es lo que necesitas.

Saludos
Leo.
  #4 (permalink)  
Antiguo 24/06/2013, 15:57
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: esta consulta sql es posible?

si no me equivoco lo que quieres son todos los mensajes entre esos 2 participantes, sin importar de quien a quien, en ese caso puedes hacer un OR:
Código MySQL:
Ver original
  1. select * from chats where (emisor=1 and receptor=2) OR (emisor=2 and receptor=1);

saludos!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Última edición por gnzsoloyo; 24/06/2013 a las 16:09

Etiquetas: php, sql, 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 21:48.