Foros del Web » Programando para Internet » PHP »

Ayuda con consulta

Estas en el tema de Ayuda con consulta en el foro de PHP en Foros del Web. Buenas tardes, Estoy dándole vueltas a un tema que no consigo darle solución. En principio me pareció sencillo pero se ve que llego a poco... ...
  #1 (permalink)  
Antiguo 06/11/2008, 13:11
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 15 años, 8 meses
Puntos: 1
Ayuda con consulta

Buenas tardes,

Estoy dándole vueltas a un tema que no consigo darle solución. En principio me pareció sencillo pero se ve que llego a poco... jejeje.

Se trata de que tengo una consulta a una base de datos como esta:

$querydb = mysql_query("select * from tabla1 INNER JOIN dtabla2 ON tabla1.id=tabla2.id where tabla1.id like '".$id."' ORDER BY tabla2.numeroregistro") or die("Error en query:". mysql_error() );


Y explicado en palabras, esta consulta busca datos en dos tablas relacionadas (sin mayor complicación), y dentro de los registros de la 2º tabla hay un campo que es numérico (numregistro), que va desde el 1 hasta el 30. En la consulta siempre saca un registro de la tabla 1 (dato irrelevante), y X registros de la tabla2, que pueden contener en el campo numregistro valores del 1 al 30 sin orden aparente y salteados, pero que no se pueden repetir.

Lo que quería hacer es un bucle tal que, me devolviera los datos cuyo $i coincide con el numregistro de la tabla2 devueltos en la consulta, algo como:

for($i=0;$i<20;$i++) {

if ( si $i = a los "numregistro"s devueltos en la consulta) {
instrucciones....
}

}


¿Como podria montar esa condición del if? Lo he intentado de mil maneras y no lo consigo, no os pego el código porque creo que mis tiros no van acertados y no quisiera liar más la madeja)

Gracias y un saludo.
  #2 (permalink)  
Antiguo 06/11/2008, 13:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Ayuda con consulta

We!!! Me siento orgulloso de mi mismo, lo he conseguido. No obstante me da que le he dado muchas vueltas al código. Lo voy a pegar por si alguien tiene curiosidad, y piensa una forma de optimizarlo. Lo he hecho así:


Por aquí la consulta...:

$querydb = mysql_query("select * from tabla1 INNER JOIN dtabla2 ON tabla1.id=tabla2.id where tabla1.id like '".$id."' ORDER BY tabla2.numeroregistro") or die("Error en query:". mysql_error() );

Por aquí calculo el nº de resultados obtenidos, y hago un array sólo con los campos de los registros obtenidos de numeroregistro

$numresultados=mysql_num_rows($querydb);
for($i=0;$i<$numresultados;$i++) {
mysql_data_seek($querydb,$i);
$numeroregistro[$i]=$row[numeroregistro];
}


Y luego aquí pongo el bucle y la condición para que devuelva sólo esos datos:

for($i=0;$i<30;$i++) {
if (!empty($numregistro[$i])) {
instrucciones......
}
}


Echarle un vistazo! Un saludo y gracias!
  #3 (permalink)  
Antiguo 06/11/2008, 13:38
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Ayuda con consulta

Cita:
(...) Lo que quería hacer es un bucle tal que, me devolviera los datos cuyo $i coincide con el numregistro de la tabla2 (...)
Esto no lo he entendido. ¿Sólo "analizar" quieres los 20 primeros resultados de la consulta? ¿Sólo te interesan los 'numregistro' con valores inferiores a 20? ¿Cuál es el propósito de ese bucle?

Saludos.
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:37.