Foros del Web » Programando para Internet » PHP »

Problema con consulta

Estas en el tema de Problema con consulta en el foro de PHP en Foros del Web. Hola. Quiero realizar una consulta en la que el primer resultado de ella sea un registro con un ID que yo determino Podria hacer esto: ...
  #1 (permalink)  
Antiguo 19/09/2011, 12:46
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Problema con consulta

Hola.

Quiero realizar una consulta en la que el primer resultado de ella sea un registro con un ID que yo determino

Podria hacer esto: Select * from usuarios where ID = 40 . pero no me mostraria los demas registros. Como puedo hacer para que me muestre en primer lugar el registro que yo determino con el ID y que luego me muestre todos los demas.


Saludos
  #2 (permalink)  
Antiguo 19/09/2011, 13:04
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Problema con consulta

Que te parece algo así:

Código MySQL:
Ver original
  1. SELECT * FROM usuarios WHERE ID > 39

Este es un tema de mysql, no de php.

Saludos
  #3 (permalink)  
Antiguo 19/09/2011, 13:13
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta

el problema de esa es que todos los registros con ID menor a 39 no me van a aparecer, yo necesito que me aparezcan todos debajo del que necesito que aparezca primero
  #4 (permalink)  
Antiguo 19/09/2011, 13:19
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Problema con consulta

Ahh ok, creo que ya te entendí. Lo que quieres es primero mostrar el usuario con ID = 40 y luego todos los demás.

Podrías hacerlo en 2 consultas, en la primera recoges el usuario con ID = 40 y en la segunda todos los demás (ID <> 40).

Saludos
  #5 (permalink)  
Antiguo 19/09/2011, 13:20
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con consulta

A mi se me ocurre algo así, mira a ver si te sirve.

Código PHP:
Ver original
  1. <?php
  2. $c = mysql_connect('localhost', 'root', '12345');
  3. mysql_select_db('basededatos');
  4. $sql = 'select * from tabla';
  5. $res = mysql_query($sql) or die(mysql_error());
  6.  
  7. $id_inicio = 40;
  8. $tureg = '';
  9. $regs = array();
  10.  
  11. while ($reg = mysql_fetch_array($res)) {
  12.     if ($reg['id'] == $id_inicio) {
  13.         $tureg = $reg;
  14.     } else {
  15.         $regs[] = $reg;
  16.     }
  17. }
  18.  
  19. if (is_array($tureg)) {
  20.     echo $tureg['id'] . '<br />';
  21. }
  22.  
  23. foreach ($regs as $v) {
  24.     echo $v['id'] . '<br />';
  25. }

Edit: Igual no es el foro pero te dejo la forma con MySQL

Código SQL:
Ver original
  1. SELECT id, IF(id = 40, 1, 2) AS orden FROM tabla ORDER BY orden, id ASC
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 19/09/2011 a las 13:28
  #6 (permalink)  
Antiguo 19/09/2011, 13:30
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema con consulta

Gracias quike me dio una idea tu post


Saludos
  #7 (permalink)  
Antiguo 19/09/2011, 13:34
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con consulta

Cita:
Iniciado por eMaa Ver Mensaje
Gracias quike me dio una idea tu post


Saludos
No veo la necesidad de hacer 2 consultas para eso. Revisa mi mensaje #5, veo que ni lo leiste. Saludos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 19/09/2011, 13:48
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 11 meses
Puntos: 14
Respuesta: Problema con consulta

Seguramente con un UNION. El primero con la condición de que el ID sea el que buscas y el segundo que el ID no sea el que buscas.
__________________
No hay cuerda desafinada sino músico progresivo
  #9 (permalink)  
Antiguo 19/09/2011, 13:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con consulta

Nah para qué UNION si solamente tiene que usar Order by

Código SQL:
Ver original
  1. SELECT id, campos..., IF(id=40, 1, 2) AS orden FROM usuarios ORDER BY orden, id ASC
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 19/09/2011, 13:57
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 11 meses
Puntos: 14
Respuesta: Problema con consulta

Cita:
Iniciado por andresdzphp Ver Mensaje
Nah para qué UNION si solamente tiene que usar Order by

Código SQL:
Ver original
  1. SELECT id, campos..., IF(id=40, 1, 2) AS orden FROM usuarios ORDER BY orden, id ASC
Quizás... pero no estoy tan seguro que sea tan eficiente. De una forma tienes que ejecutar dos consultas sencillas. De la otra forma, en cada fila tienes que realizar una comprobación más luego el orden. Además, la nueva consulta que generas no es índice ni nada y tienes que aplicarle el orden sobre ella.

De todas formas, no estoy tan seguro de lo que digo, pero por tenerlo en cuenta.

Quizás un EXPLAIN de ambas consultas pueda decir cuál es mejor solución.
__________________
No hay cuerda desafinada sino músico progresivo
  #11 (permalink)  
Antiguo 19/09/2011, 13:59
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con consulta

La solución que encontré la dió un moderador experto en MySQL de este foro. No se que tal eficiente sea. Igual nisiquiera agradecieron ni miraron mis post. voy a ver cual es más eficiente. Saludos Smolky

Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE id=40
  2. UNION
  3. (SELECT * FROM tabla WHERE id<>40 ORDER BY id ASC)
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: registro, usuarios
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 17:31.