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

subconsultas

Estas en el tema de subconsultas en el foro de Mysql en Foros del Web. Hola, en una base de datos tengo que mostrar tres datos del maximo y el minimo valor de uno de ellos, he creido que se ...
  #1 (permalink)  
Antiguo 08/06/2009, 14:11
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
subconsultas

Hola, en una base de datos tengo que mostrar tres datos del maximo y el minimo valor de uno de ellos, he creido que se realizaba asi pero me da el siguiente error

SELECT `Codigo de identificacion del medico`, nombre, `Numero de colegiado` FROM Medicos WHERE `Numero de colegiado` IN (SELECT MIN(`Numero de colegiado`), MAX(`Numero de colegiado`) FROM Medicos) ORDER BY `Numero de colegiado`;
ERROR 1241 (21000): Operand should contain 1 column(s)


que es lo que hago mal?

muchas gracias
  #2 (permalink)  
Antiguo 08/06/2009, 15:12
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, 5 meses
Puntos: 2658
Respuesta: subconsultas

Estás haciendo una subconsulta que devuelve DOS campos, para comparar con UN campo.
Debes hacerlo contra un solo campo o rediseñar toda la consulta.
__________________
¿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 08/06/2009, 23:19
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: subconsultas

y de que forma podría hacerlo con los 2 campos?

muchas gracias
  #4 (permalink)  
Antiguo 09/06/2009, 04:24
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, 5 meses
Puntos: 2658
Respuesta: subconsultas

Una forma rudimentaria para hacer lo que quieres sería:
Código sql:
Ver original
  1. SELECT `Codigo de identificacion del medico`, nombre, `Numero de colegiado`
  2. FROM Medicos
  3. ORDER BY `Numero de colegiado`
  4. LIMIT 1
  5. UNION
  6. SELECT `Codigo de identificacion del medico`, nombre, `Numero de colegiado`
  7. FROM Medicos
  8. ORDER BY `Numero de colegiado` DESC
  9. LIMIT 1;
__________________
¿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 09/06/2009, 06:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: subconsultas

Como usas order by y limit en las cláusulas, debes incluirlas dentro de los paréntesis:
Código sql:
Ver original
  1. (SELECT `Codigo de identificacion del medico`, nombre, `Numero de colegiado`
  2. FROM Medicos
  3. ORDER BY `Numero de colegiado`
  4. LIMIT 1)
  5. UNION
  6. (SELECT `Codigo de identificacion del medico`, nombre, `Numero de colegiado`
  7. FROM Medicos
  8. ORDER BY `Numero de colegiado` DESC
  9. LIMIT 1);
  #6 (permalink)  
Antiguo 09/06/2009, 07:03
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, 5 meses
Puntos: 2658
Respuesta: subconsultas

Perdón. Un olvido...
Gracias por la corrección.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 02:15.