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

Ayuda con una select sencilla (creo)

Estas en el tema de Ayuda con una select sencilla (creo) en el foro de Bases de Datos General en Foros del Web. Hola, Tengo una tabla de con tres campos: idcalle, coordx y coordy. Y, por ejemplo, estos datos: 1,20,510 1,310,561 2,674,21 2,859,12 Necesito una select que ...
  #1 (permalink)  
Antiguo 12/08/2004, 15:53
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Ayuda con una select sencilla (creo)

Hola,

Tengo una tabla de con tres campos: idcalle, coordx y coordy.

Y, por ejemplo, estos datos:
1,20,510
1,310,561
2,674,21
2,859,12

Necesito una select que me devuelva todos los registros de un mismo "idcalle" aunque solo uno de ellos cumpla un requisito sobre "coordx". Me explico:
si busco los "coordx" que esten entre 100 y 200, necesito que me devuelva no solo el que cumple la condicion (el primero) sino todos los que tengan el mismo "idcalle". O sea, tambien el segundo, aunque en concreto no cumpla la condicion.

No se si me he explicado bien. Supongo que se tratara de una select sencilla, pero no consigo saber como hacerlo. Habia pensado algo asi, pero me da error:
select * from calles
where idcalle in (select idcalle from calles where coordx between 100 and 200)

Agradeceria cualquier sugerencia. Un saludo.
  #2 (permalink)  
Antiguo 13/08/2004, 00:58
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 5 meses
Puntos: 8
¿Que error te arroja?
Salu2
  #3 (permalink)  
Antiguo 13/08/2004, 01:17
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Pues lo unico que me decia es que la sintaxis de la sentencia no era correcta, pero no especificaba porque. Por si sirve, trabajo con MySQL y el select lo ejecute desde el programa "EMS MySQL Manager".

Un saludo.
  #4 (permalink)  
Antiguo 13/08/2004, 01:22
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 5 meses
Puntos: 8
¿Que versión de MySQL tienes?Según tengo entendido MySQL no permite las subconsultas por lo que la solución pasará por hacer varios Selects o bien el crear tablas temporales.
Saludos
  #5 (permalink)  
Antiguo 13/08/2004, 02:05
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Pues utilizo MySQL 4.0. Que palo esto de las subconsultas. Me he estado mirando la web de MySQL e igual me instalo la version beta de 4.1, que se supone que ya las acepta.

Gracias SunDark. Un saludo.
  #6 (permalink)  
Antiguo 13/08/2004, 02:09
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
select * from calles INNER JOIN (select idcalle from calles where coordx between 100 and 200) cns ON calles.idcalle=cns.idcalle
  #7 (permalink)  
Antiguo 13/08/2004, 05:23
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Creo que esto te vale y es más sencillo:
Código:
select a.* 
from calles a, calles b
where a.idcalle = b.idcalle
and b.coordx between 100 and 200
Si quieres lo puedes poner con inner join
Código:
select a.* 
from calles a inner join calles b on a.idcalle = b.idcalle
where b.coordx between 100 and 200
Un saludo
  #8 (permalink)  
Antiguo 13/08/2004, 06:39
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias a todos por la ayuda. Con la consulta de Vice funciona perfectamente. No sabia que se le podian dar diferentes alias a una misma tabla.

Un saludo.
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:25.