Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ayuuda me estoy volviendo loco SQL

Estas en el tema de Ayuuda me estoy volviendo loco SQL en el foro de PHP en Foros del Web. Buenas buenas. despues de 5 años me vuelvo a aparecer por aca. Jaja . Espero que vaya todo bien. Bueno les comento. Resulta que tengo ...
  #1 (permalink)  
Antiguo 26/09/2015, 07:26
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 16 años, 4 meses
Puntos: 2
Exclamación Ayuuda me estoy volviendo loco SQL

Buenas buenas. despues de 5 años me vuelvo a aparecer por aca. Jaja . Espero que vaya todo bien. Bueno les comento. Resulta que tengo una consulta SQL con while la cual necesitaba que me traiga SOLO los registros que cumplan con un WHERE que lo trae otra consulta.

este es literalmente la consultas.


( Necesito esta tabla porque me trae la variable " amigos " para la tabla COMENTARIOS )
$query = mysql_query("SELECT * from amigos WHERE anfi='$creador' AND acepta='1'");
while($row=mysql_fetch_array($query))
{

( Esta es la tabla que necesito que me ordene por fecha ya que es la que muestra los resultados )
$query2 = mysql_query("SELECT * from comentarios WHERE creador='$amigos' order by fecha DESC");


while($row=mysql_fetch_array($query2))
{


Ahora bien, funciona perfecto. Pero necesito que me ordene según campo fecha de la tabla COMENTARIOS ya que pongo el order by y solo obedece a la tabla AMIGOS.

Como puedo hacer!!? :(
desde ya muchas graciaaass :v
  #2 (permalink)  
Antiguo 26/09/2015, 07:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ayuuda me estoy volviendo loco SQL

¿A qué te refieres con "obedece a la tabla AMIGOS"?
No se entiende, en esa consulta en ningun momento consultas la tabla "Amigos", sólo verificas que devuelva aquellos con un determinado "creador". La tabla AMIGOS la usas en una consulta diferente, y no haces ningún JOIN entre ambos, ni tampoco se ve como obtienes $amigos.
El ORDER BY, por su lado, ordenará bien en tu caso siempre que el campo sea de tipo DATE, DATETIME o TIMESTAMP.
¿Puedes mostrarnos el resultado que obtienes ahora, y cuál sería el resultado que según tú deberías obtener?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/09/2015, 08:17
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Ayuuda me estoy volviendo loco SQL

El campo $amigos = $row[amigo]; de la tabla AMIGOS es necesario para que filtre en la tabla COMENTARIOS pero por mas que le pongo ORDER BY a la tabla COMENTARIOS, primero me ORDENA por los resultados de la tabla AMIGOS por mas que los resultados vistos sean los de la tabla COMENTARIOS. Te muestro.

_______________________________

TABLA AMIGOS

VALOR A
VALOR B
VALOR C

----------------------------------------
TABLA COMENTARIOS

VALOR 1 - FECHA 1 - VALOR C
VALOR 2 - FECHA 2 - VALOR B
VALOR 3 - FECHA 3 - VALOR A
-----------------------------------------
RESULTADOS TABLA
COMENTARIOS CON VALORES A,B,C COMO PARAMETROS EN COMÚN DE TABLA AMIGOS
ORDER BY FECHA EN TABLA COMENTARIOS:

VALOR 3 - FECHA 3 ( registros del valor A en la tabla comentarios )
VALOR 2 - FECHA 2 ( registros del valor B en la tabla comentarios )
VALOR 1 - FECHA 1 ( registros del valor C en la tabla comentarios )
_____________________________

ORDENA POR A,B,C de tabla AMIGOS . no hace caso a ningun ORDEN de tabla COMENTARIOS.

Resultados esperados:

VALOR 1 - FECHA 1 ( registros del valor C en la tabla comentarios )
VALOR 2 - FECHA 2 ( registros del valor B en la tabla comentarios )
VALOR 3 - FECHA 3 ( registros del valor A en la tabla comentarios )

_______________

Ya entendí lo que hace. PRIMERO te toma de la tabla amigos según el orden que llega EJ . A,B,C y despues te ordena por FECHA en el ORDER BY de COMENTARIOS.

El tema es que no llega como corresponde
Los resultados deberian filtrase por el campo FECHA de COMENTARIOS y lo hace como MOSTRE LOS RESULTADOS y los ESPERADOS del ejemplo que di.

ALGUNA IDEA? :(

Última edición por Frantopo; 26/09/2015 a las 08:31
  #4 (permalink)  
Antiguo 26/09/2015, 10:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ayuuda me estoy volviendo loco SQL

Por lo pronto, que mandes a ordenar la segunda consulta no tiene impacto en la primera. Son consultas independientes.
En segundo lugar, si que res ordenar en base a una relación entre las dos tablas, corresponde que hagas un JOIN y no dos consultas separadas.
Luego te paso el ejemplo. Ahora no estoy en mi PC.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/09/2015, 14:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Ayuuda me estoy volviendo loco SQL

Sisi , despues me di cuenta que hacia el orden bien de la tabla COMENTARIOS pero me ordenaba según iba cayendo de la tabla AMIGOS osea

VALOR A
1 fecha 1
2 fecha 2
3 fecha 3
4 fecha 4

VALOR B
1 fecha 1
2 fecha 2
3 fecha 3
4 fecha 4


Si , me imagine que necesitaria un Join o algo pero se muy basico de sql como para hacerlo entonces recurri acá :v .


GRACIAS! :D
  #6 (permalink)  
Antiguo 27/09/2015, 08:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Ayuuda me estoy volviendo loco SQL

alo?¿ -- Si pueden darme una maniyo....
  #7 (permalink)  
Antiguo 27/09/2015, 08:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Ayuuda me estoy volviendo loco SQL

Bueno ya lo resolvi... AL final no necesite ningun join ni nada. Solo un poco de ingenio y hasta elimine la otra consulta

$query = mysql_query("SELECT * from comentarios WHERE creador IN (SELECT amigo FROM amigos where anfi='$creador' AND acepta='1') order by fecha desc LIMIT $inicial,$cantidad");

while($row=mysql_fetch_array($query))
{



Si a alguien le sirve en algun momento.

Saludos.
resulto por mi.

Etiquetas: fecha, loco, mysql, registro, 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 15:22.