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

Seleccionar un campo y subir otro más

Estas en el tema de Seleccionar un campo y subir otro más en el foro de Mysql en Foros del Web. Hola a todos. Vengo con un problema pero no sé si sea sencillo, difícil o posible. Tengo una consulta simple y me da un campo ...
  #1 (permalink)  
Antiguo 27/05/2015, 08:27
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Seleccionar un campo y subir otro más

Hola a todos.

Vengo con un problema pero no sé si sea sencillo, difícil o posible.

Tengo una consulta simple y me da un campo en específico, pero de ese campo necesito que me dé el siguiente registro o id, prácticamente sumar 1 (+1) a ese registro.

Esta es mi consulta:

Código MySQL:
Ver original
  1. SELECT * FROM traslado
  2. INNER JOIN servicio
  3. ON traslado.servicio_id = servicio.servicio_id
  4.  
  5. INNER JOIN cliente
  6. ON servicio.cliente_id = cliente.cliente_id
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND cliente.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id desc   LIMIT 1

Gracias por adelantado.
  #2 (permalink)  
Antiguo 27/05/2015, 08:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Seleccionar un campo y subir otro más

digamos que esa consulta te regresa el id que necesitas, entonces al resultado ponle un +1


Código SQL:
Ver original
  1. SELECT idcliente+1,* FROM traslado
  2. INNER JOIN servicio
  3. ON traslado.servicio_id = servicio.servicio_id
  4.  
  5. INNER JOIN cliente
  6. ON servicio.cliente_id = cliente.cliente_id
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND cliente.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id DESC   LIMIT 1


O podrias hacerlo de esta manera:

Código MySQL:
Ver original
  1. SELECT * FROM traslado
  2. INNER JOIN servicio
  3. ON traslado.servicio_id = servicio.servicio_id+1
  4.  
  5. INNER JOIN cliente
  6. ON servicio.cliente_id = cliente.cliente_id+1
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND cliente.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id desc   LIMIT 1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/05/2015, 08:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Seleccionar un campo y subir otro más

Si devuelve más de un registro, la solución sería:
Código MySQL:
Ver original
  1. FROM traslado T
  2.     INNER JOIN servicio S ON T.servicio_id = S.servicio_id
  3.     INNER JOIN cliente C ON S.cliente_id = C.cliente_id
  4. WHERE remolque_otros ="'.$_GET['s'].'"
  5.     AND C.alias != "'.$cliente.'"
  6. GROUP BY fecha_servicio
  7. ORDER BY traslado_id desc  
  8. LIMIT 1, 1
Eso devolvería el siguiente registro al que te devolvía la query como la tenías.

Por cierto: Trata de aprender a usar alias. Ayuda a simplificar la sintaxis y hace más entendible el código.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 27/05/2015, 08:48
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Seleccionar un campo y subir otro más

Cita:
Iniciado por Libras Ver Mensaje
digamos que esa consulta te regresa el id que necesitas, entonces al resultado ponle un +1


Código SQL:
Ver original
  1. SELECT idcliente+1,* FROM traslado
  2. INNER JOIN servicio
  3. ON traslado.servicio_id = servicio.servicio_id
  4.  
  5. INNER JOIN cliente
  6. ON servicio.cliente_id = cliente.cliente_id
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND cliente.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id DESC   LIMIT 1


O podrias hacerlo de esta manera:

Código MySQL:
Ver original
  1. SELECT * FROM traslado
  2. INNER JOIN servicio
  3. ON traslado.servicio_id = servicio.servicio_id+1
  4.  
  5. INNER JOIN cliente
  6. ON servicio.cliente_id = cliente.cliente_id+1
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND cliente.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id desc   LIMIT 1
Hola libras.

Lo que me dijiste que hiciera me da el mismo resultado que como si no se lo pusiera.

Código MySQL:
Ver original
  1. SELECT traslado.*, traslado_id+1 FROM traslado
  2. INNER JOIN servicio S
  3. ON traslado.servicio_id = S.servicio_id
  4.  
  5. INNER JOIN cliente C
  6. ON S.cliente_id = C.cliente_id
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND C.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id desc   LIMIT 1

Este es el resultado:

Código HTML:
4  | 48519 | EMBRAER   |	EZ AIR EMBRAER   |	2015-05-27 08:35:21   |	EMBRAER 
3  | 48519 | EMBRAER   |	EZ AIR EMBRAER   |	2015-05-22 14:58:04   |	EMBRAER  <---- Este es el resultado que quiero
2  | 48519 | CMP        |        ACM         |     	2015-05-14 11:29:23   |	EMBRAER  <---- Este es el resultado que me da la consulta
  #5 (permalink)  
Antiguo 27/05/2015, 09:00
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Seleccionar un campo y subir otro más

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si devuelve más de un registro, la solución sería:
Código MySQL:
Ver original
  1. FROM traslado T
  2.     INNER JOIN servicio S ON T.servicio_id = S.servicio_id
  3.     INNER JOIN cliente C ON S.cliente_id = C.cliente_id
  4. WHERE remolque_otros ="'.$_GET['s'].'"
  5.     AND C.alias != "'.$cliente.'"
  6. GROUP BY fecha_servicio
  7. ORDER BY traslado_id desc  
  8. LIMIT 1, 1
Eso devolvería el siguiente registro al que te devolvía la query como la tenías.

Por cierto: Trata de aprender a usar alias. Ayuda a simplificar la sintaxis y hace más entendible el código.
Hola gnzsoloyo.

Gracias por el consejo ya los empezaré a usar.

Con respecto a la sugerencia del limit este es el query:

Código MySQL:
Ver original
  1. SELECT traslado.*, traslado_id FROM traslado
  2. INNER JOIN servicio S
  3. ON traslado.servicio_id = S.servicio_id
  4.  
  5. INNER JOIN cliente C
  6. ON S.cliente_id = C.cliente_id
  7.  
  8. WHERE remolque_otros ="'.$_GET['s'].'"
  9. AND C.alias != "'.$cliente.'"
  10.  
  11. GROUP BY fecha_servicio
  12.  
  13.  ORDER BY traslado_id desc   LIMIT 1,1

Pero me salio un registro antes, yo necesito un registro despues:

Código HTML:
4  |  48519  |  EMBRAER   |  	EZ AIR EMBRAER   |	2015-05-27 08:35:21   |	EMBRAER
3  |  48519  |  EMBRAER   |	EZ AIR EMBRAER   |	2015-05-22 14:58:04   |	EMBRAER <---- este es el resultado que quiero
2  | 48519   | CMP        |        ACM         |     	2015-05-14 11:29:23   |	EMBRAER <--- este es el resultado que me da mi query
1  |  48519  |   SMTC   |	RAMPA   |	2015-04-27 13:18:54   |	SMTC <---- este es el resultado que me da el limit 1,1

Etiquetas: Ninguno
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:11.