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

Ayuda con consulta y ORDER

Estas en el tema de Ayuda con consulta y ORDER en el foro de Mysql en Foros del Web. Buenas, tengo un problema, o problemon!! jajaja el tema es que comohe comentado en otros post, tengo una base de datos de productos, en la ...
  #1 (permalink)  
Antiguo 06/10/2006, 09:49
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Ayuda con consulta y ORDER

Buenas, tengo un problema, o problemon!! jajaja

el tema es que comohe comentado en otros post, tengo una base de datos de productos, en la cual guardo en un campo la poblacion. esta poblacion esta relacionada con la base de datos de poblaciones por id.

hasta ahora no he tenido ningun problema. pero ahora he puesto una combo tal que asi:

$res = mysql_query ("SELECT DISTINCT poblacion FROM productos WHERE tipo='".$tipo1."' ".$zona1." ORDER BY poblacion ASC") or die (mysql_error());

lo que hago es mostrar en una combo todas las poblaciones en las cuales estan disponibles esos productos. pero donde etsa el problema, que al ordenar por poblacion ordena el id, y no me salen ordenados por orden alfabetico.

luego para obtener el nombre en la combo hago lo siguiente:

$totalProductos = mysql_query("SELECT id,poblacion FROM poblaciones WHERE id=$poblacion ORDER BY poblacion") or die(mysql_error());
$total = mysql_fetch_array($totalProductos);

y tengo el nombre de la poblacion, pero no las consigo ordenar. a alguien se le ocurre alguna opcion?

saludos
  #2 (permalink)  
Antiguo 06/10/2006, 11:44
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
he intentado con algo asi, sin suerte. pero puede que vaya por aqui el tema:

$res = mysql_query ("SELECT DISTINCT productos.poblacion,poblaciones.poblacion FROM productos,poblaciones WHERE productos.tipo='".$tipo1."' ORDER BY poblaciones.poblacion ASC") or die (mysql_error());

pero me da error
  #3 (permalink)  
Antiguo 06/10/2006, 12:22
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
he prbado con inner join y tampoco me funciona:

$res = mysql_query ("SELECT DISTINCT poblacion FROM productos inner join poblaciones on (poblacion=poblaciones.ID) WHERE tipo='".$tipo1."' ".$zona1."") or die (mysql_error());

q hago mal?
  #4 (permalink)  
Antiguo 07/10/2006, 14:20
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
buenas, esta ultima consulta me da el siguiente error:

Column: 'poblacion' in field list is ambiguous

y el campo poblacion esta en las dos tablas... pensaba que asi se referenciaba. puede alguien decirme que esta fallando?

saludos
  #5 (permalink)  
Antiguo 07/10/2006, 16:32
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
no entiendo que pretendes hacer aqui WHERE tipo='".$tipo1."' ".$zona1.", para que esta $zona1 allí, entiendo que quieres buscar donde tipo sea igual a algo(por ejemplo) pero y $zona??

por otra parte puedes intentar algo como esto
SELECT prod.poblacion, p.id, p.poblacion FROM productos prod INNER JOIN poblaciones p ON p.poblacion=prod.poblacion WHERE tipo='".$tipo1."' (y lo completas con lo demas que necesites algo=$zona1[creo] y el desc )

espero que te de una idea.
saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #6 (permalink)  
Antiguo 09/10/2006, 02:36
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
hola eits, y gracias por tu respuesta.

no me funciona lo que me comentas, no me obtiene resultados., alguna otra propuesta?
  #7 (permalink)  
Antiguo 09/10/2006, 07:24
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
buenas, he solucionado en parte el problema, aunque ahora me surge otro.. jajja. he hecho lo siguiente:

$res = mysql_query ("SELECT DISTINCT productos.poblacion, poblaciones.id, poblaciones.poblacion FROM productos,poblaciones WHERE tipo='".$tipo1."' AND productos.poblacion = poblaciones.id ".$zona1." ORDER BY poblaciones.poblacion ASC ") or die (mysql_error());

para que me entendais, desde el flash le mando las cadenas que faltan aqui, tal que tipo y zona. el problema lo tengo con la variable zona. como dentro de la base de datos de poblaciones necesito dividir entre unas zonas y otras, hago lo siguiente:

sqlZona = "AND (productos.poblacion NOT BETWEEN 83 AND 93)";

y me funciona a la perfeccion, pero necesito que el sqlZona sea tal que asi:

sqlZona = "AND (productos.poblacion NOT BETWEEN 83 AND 93) OR (productos.poblacion NOT BETWEEN 83 AND 93)";

y al meterle esta sentencia, me vuelve a mostrar las poblaciones mezcladas.

pq me sucede esto? saludos
  #8 (permalink)  
Antiguo 09/10/2006, 09:19
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
hola de nuevo, pero sigo sin entender, ¿porque intentas hacer "productos.poblacion NOT BETWEEN 83 AND 93" 2 veces?

sqlZona = "AND (productos.poblacion NOT BETWEEN 83 AND 93) OR (productos.poblacion NOT BETWEEN 83 AND 93)";

si te equivocaste al postear, y es otra condición que debe llevar después del OR puedes probar englobarlo(no se si asi se dice) como una sola con paréntesis es decir

sqlZona = "AND ((productos.poblacion NOT BETWEEN 83 AND 93) OR (aqui la otra condición))";

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 09/10/2006 a las 09:54
  #9 (permalink)  
Antiguo 09/10/2006, 10:26
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
gracias eits, no es que me haya equivocado al postear.el problema es que la base de datos de poblaciones esta mezclada, me la pasaron asi. y como los productos estan asignados, no puedo cambiar las id de las poblaciones.

la cosa es que tengo barcelona y tarragona, y tarragona son poblaciones entre 84 AND ... y 150 AND 200.

por eso, lo que pretendo es que al clcikar en bcn, me diga que no estan entre estas dos.

entiendeslo que pretendo?

y al meter la segunda condicion, entonces no me lo ordena correctamente...

saludos
  #10 (permalink)  
Antiguo 09/10/2006, 10:38
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
se le olvidaba comentarte en el post, que lo que me has comentado, lo he hecho y funciona perfectamente!

saludos y gracias de nuevo
  #11 (permalink)  
Antiguo 10/10/2006, 11:22
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
que bueno que te funcionó!!.

sin embargo a lo que me refería en mi último post es que utilizas producto.poblacion 2 veces por eso decía si te habias confundido, a mi punto de vista lo correcto sería:
Código PHP:
$sqlZona "AND ((productos.poblacion NOT BETWEEN 83 AND 93) OR (poblaciones.poblacion NOT BETWEEN 83 AND 93))"
date cuenta que utilizó "productos.poblacion" y "poblaciones.poblacion" esto con el fin de determinar que la condición se cumpla en la 1ra. tabla ó en la 2da. en cualquiera que suceda me devolverá los datos.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
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:00.