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

doble consulta mysql

Estas en el tema de doble consulta mysql en el foro de Mysql en Foros del Web. buenos dias a todos. tengo una duda que me mata. estoy haciendo un proyecto de fin de modulo (red social) y tengo una dudilla de ...
  #1 (permalink)  
Antiguo 25/11/2011, 03:27
 
Fecha de Ingreso: diciembre-2010
Ubicación: Málaga,Andalucía,España
Mensajes: 12
Antigüedad: 13 años, 3 meses
Puntos: 0
doble consulta mysql

buenos dias a todos. tengo una duda que me mata. estoy haciendo un proyecto de fin de modulo (red social) y tengo una dudilla de base de datos
resulta que tengo x tablas, y una de ellas es amigo, que tiene 6 campos:
mail y amigo (ambos hacen referencia al mail de una tabla registrado) nuevo (para saber si es nuevo y anunciarlo o no) fecha (para controlar cuando se hacen amigos y que no se desborde) y ultimaModificacionMail y ultimaModificacionAmigo (el primero para saber si esta desconectado el que agrego, y el segundo por si lo esta el agregado)
el pensamiento es que, si añades un amigo se ejecutaria esto:
INSERT INTO amigo VALUES ('[email protected]','[email protected]','si',21-11-2011,0,20-11-2011)
el 0 seria para decir que tu estas conectado, con lo cual ese parametro se quedaria asi para no dejarlo a null.
la pregunta que vengo a hacer despues de todo esto, es que yo quiero listar a los amigos por fechas de ultima modificacion, tal y como lo hacen tuenti, facebook, etc, pero para ello, debo controlar que la fecha de ultima modificacion sea del campo amigo o del campo mail, segun esté tu correo en uno o en otro, para buscar el contrario. la busqueda que hago hasta ahora es:
$listado=mysql_query(SELECT * FROM amigo WHERE mail='".$amigo."' or amigo='"$amigo"');
pero claro, esa consulta ya no me vale con este añadido porque me los muestra uno tras otro siempre en el orden de la tabla amigos, y en el phpmyadmin se quedan en entrada de ultima fecha. habia pensado en meter esta otra consulta
SELECT FROM amigo WHERE (mail='.$usuario.' ORDER BY ultimamodificacionMail desc) or (amigo='.$usuario.' ORDER BY ultimaModificacionAmigo desc)
pero no me sirve, no llego a tal nivel de control de consultas y sinceramente ahora mismo no recuerdo como se hacia para buscar con 1 campo ligado a otro y el 2º campo ligado al 2º otro (mail ligado a ultimamodificacionmail y amigo ligado al otro campo)
la otra idea que me ronda es modificar el parametro de orden de la tabla amigo en el mismo phpmyadmin, idea que descarto porque estoy en las mismas, como controlo que el campo que busco tenga relacion directa con el de modificacion correspondiente, sin saber quien es el agregante y quien es el agregado
podriais echarme una manita, por favor? es que si consigo eso, el proyecto pega un giro de 180 grados, ya que ahora podria interactuar completamente con los usuarios que realmente te interesan, los que realizan modificaciones en los ultimos momentos.
Un saludo, y perdon por la extension XD
Gracias
  #2 (permalink)  
Antiguo 25/11/2011, 06:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: doble consulta mysql

Primer error

Cita:
...21-11-2011,0,20-11-2011...
Las fecha deben entrar con el formato adequado y delimitadas por '

'2011-11-21',0,'2011-11-20'


Sobre la ordenación no se te acaba de entender pero desde luego que la query que manda no te sirve

Cita:
SELECT faltan los campos FROM amigo WHERE (mail='.$usuario.' ORDER BY ultimamodificacionMail desc) or (amigo='.$usuario.' ORDER BY ultimaModificacionAmigo desc)
para ordenar de forma distinta si cumplen una condició u otra debes lanzar querys separadas ... si es que no te sirve esto

Código MySQL:
Ver original
  1. SELECT ...lista de campos...
  2. FROM amigo
  3. WHERE mail='.$usuario.'  
  4. or amigo='.$usuario.'
  5. ORDER BY ultimamodificacionMail desc,
  6.                 ultimaModificacionAmigo desc;

o esto

Código MySQL:
Ver original
  1. SELECT ...lista de campos...
  2. FROM amigo
  3. WHERE mail='.$usuario.'  
  4. or amigo='.$usuario.'
  5. ORDER BY IF(mail='.$usuario.',ultimamodificacionMail,ultimaModificacionAmigo) desc;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/11/2011, 09:37
 
Fecha de Ingreso: diciembre-2010
Ubicación: Málaga,Andalucía,España
Mensajes: 12
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: doble consulta mysql

a ver, me refiero a que si un amigo modifica algo, se grabe esa modificacion en ultimamodificacionamigo, y si lo modificas tu, en ultimamodificacionmail, pero como lo hago, si estan en la misma tabla, para decir que mail corresponde al primero y amigo al segundo. el orden ya da igual, la cosa es identificar ultimamodificacionmail como un campo ligado a mail (para que sea la ultima modificacion del mail) e identificar ultimamodificacionamigo como campo ligado a amigo. la cosa es:
como en una consulta, consigo ordenar, segun el mail pasado por parametro, las ultimas modificaciones de un mail.
ten en cuenta, que si tu añades a una persona, tu eres mail y la otra amigo, pero si te añaden a ti, es al reves. como controlo que busque la modificacion, en amigos o mail, segun lo que sea el usuario?
ejemplo:
yo soy [email protected] y tengo 5 amigos, uno de ellos me agrego
si digo select * from [email protected] order by ultimamodificacionmail desc
solo me busca en los mail donde estoy yo, pero si estoy en amigos, para controlar que busque en ultimamodificacionamigo y no en la otra, la ultima fecha de modificacion
P.D: se que es un poco lioso XD
P.D.2: se lo de las comillas, lo que pasa es que se me fue

Etiquetas: campos, doble, php, query, select, 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 12:35.