Foros del Web » Programando para Internet » PHP »

consultas dentro de while(a una misma tabla)

Estas en el tema de consultas dentro de while(a una misma tabla) en el foro de PHP en Foros del Web. Hola, muy buenas!. Estoy tratando de realizar unas consultas a una tabla dentro de un while, y debo estar haciendo algo mal. En la primera ...
  #1 (permalink)  
Antiguo 20/12/2010, 13:20
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
consultas dentro de while(a una misma tabla)

Hola, muy buenas!.


Estoy tratando de realizar unas consultas a una tabla dentro de un while, y debo estar haciendo algo mal.

En la primera consulta (antes del while)recogo varios valores de una variable con un select; luego abro un while.

Dentro de dicho while quiero
hacer un par de consultas a la misma tabla para recoger dos valores máximos y dependiendo de ellos imprimir los valores iniciales o no.
Pero el tema es que sólo me recoge un valor(inicialmente) como si se tratara de un if y no de un while;es decir, sólo me da el primer valor que encuentra.

Es algo así:


Código PHP:
:

... 
$conexion=... 
SELECTfrom tabla where... 
while(...) 

$valor=$reg['campo']; 
$conexion=... 
SELECT MAX(.......AS maximo ...where... 
if(
reg=.... 

  
$maximo1=$reg['maximo']; 
 } 
$conexion=... 
SELECT MAX(...  AS maximo...where... 
if(
reg=... 
 { 
 
$maximo2=$reg['maximo']; 

if(
$maximo1>$maximo2

echo 
$valor
echo 
"<hr>"
}  

Bueno, sé que es un poco lioso lo que he hecho. Cada script está bien escrito individualmente porque lo he comprobado por separado, e incluso en conjunto me funciona; pero sólo me recoge un valor; aunque ponga

Código PHP:
echo $valor
justo después de while , sólo me recoge el primer valor, en lugar de todos. Me encantaría si puedo informarme en algun sitio acerca de la sintaxis apropiada para este tipo de scripts. He probado diferenciando cada consulta($registros1, $registros2, etc...) o incluso tratando a la variable recogida como $valor[],o $reg[0], etcc..pero nada me funciona..:(

Mil saludos y gracias de antemano por cualquier ayuda.
Saludos
  #2 (permalink)  
Antiguo 20/12/2010, 13:27
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: consultas dentro de while(a una misma tabla)

Podes poner el codigo un poco mas completo?
Es importante por ejemplo saber que pusiste en el where de la segunda consulta...
  #3 (permalink)  
Antiguo 20/12/2010, 13:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: consultas dentro de while(a una misma tabla)

No puedes elegir dos valores máximos, ya que máximo sólo hay uno, (a menos que este se repita en muchos registros, en tal caso de todos modos será el mismo) si quieres tomar los dos valores más grandes haz la la consulta ordenando de mayor a menor (DESC) por el campo del que tomas el valor.
  #4 (permalink)  
Antiguo 20/12/2010, 13:38
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: consultas dentro de while(a una misma tabla)

Salvo que busque en dos campos distintos
  #5 (permalink)  
Antiguo 20/12/2010, 14:20
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: consultas dentro de while(a una misma tabla)

Hola.

Gracias por vuestro interés.
Pongo los scripts más completos. Y mejor explico un poco mejor lo que busco.

Tengo una tabla en la que hay proveedores y clientes. También contraseñaproveedor y contraseñacliente. Y el campo transacción. También el campo tiempo que recoge el momento en que se realizó la transacción. Para diferentes transacciones alguien que era cliente en otra puede ser proveedor y viceversa. Pero siempre conservan la misma contraseña.(Pasaría de ser contraseñacliente a ser contraseñaproveedor, pero con el mismo valor; y viceversa..)

La variable $contraseña la recogo de una variable de sesión. Es la contraseña del usuario( que como decía, podría aparecer en la tabla como cliente o como proveedor).
Busco aquellos que han sido proveedores del usuario, pero sólo aquellos cuya última transacción como proveedores ha sido después de la última transacción como clientes( en caso de haberla habido);respecto al usuario, claro.

***Perdón por lo lioso y seguramente mal explicado***

El código más completo:

Código PHP:
...
$conexion=..
..
SELECT distinctFROM  tabla WHERE  passwordcliente='$password'...//transacciones donde el usuario ha sido cliente
..
while(
$reg=...
{
$passwordproveedor=$reg['passwordproveedor'];
$emisor=$reg['emisor'];
$conexion=..
..
SELECT MAX(time) AS maximo FROM tabla WHERE passwordcliente='$password' AND passwordproveedor='$passwordproveedor'..*/busco la ultima vez y tiempo en que yo fui cliente de dicho(cadaproveedor*/
..
if(
$reg=...
{
$maximo1=$reg['maximo'];
}
SELECT MAX.......WHERE passwordcliente='$passwordproveedor' AND passwordproveedor='$password'...*/aqu&#237; el usuario es proveedor y el que antes era proveedor ahora es cliente;y recogo el momento de la ultima transaccion de este tipo*/
..
if(
$reg=..
{
$maximo2=$reg[' maximo'];
}
if(
$maximo1=$maximo2)
{
echo 
$emisor;
echo 
"<br />";
}

La lógica funciona, pero hasta cierto punto, ya que sólo me devuelve un valor, aunque lo imprima antes de todos los "if".
Muchísimas gracias. Siento de verda si es muy lioso.

Un saludo de nuevo.
  #6 (permalink)  
Antiguo 21/12/2010, 09:30
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: consultas dentro de while(a una misma tabla)

bueno, no hay problema; creo que intentaré aprender más de los bucles while y de las consultas a Mysql, a ver si así doy con ello...

Última edición por breaststroke; 21/12/2010 a las 16:50

Etiquetas: tablas
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 20:10.