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

Ordenar una tabla en base a otra tabla

Estas en el tema de Ordenar una tabla en base a otra tabla en el foro de Mysql en Foros del Web. Buenos dias, resulta que necesito ordenar registros de una tabla "productos" que que contiene un campo "id_cliente", el cual me referencia a la tabla "clientes" ...
  #1 (permalink)  
Antiguo 14/10/2008, 14:00
Avatar de matuteworld  
Fecha de Ingreso: octubre-2007
Ubicación: San Miguel de Tucuman, Tucuman
Mensajes: 79
Antigüedad: 16 años, 7 meses
Puntos: 2
Pregunta Ordenar una tabla en base a otra tabla

Buenos dias, resulta que necesito ordenar registros de una tabla "productos" que que contiene un campo "id_cliente", el cual me referencia a la tabla "clientes" con el campo "id", osea id.clientes = id_cliente.productos, en esta tabla "clientes" existe un campo "nombre", necesitaría organizar la tabla "productos" por el campo "nombres" en "clientes".

espero haber sido claro.. desde ya muchas gracias... no encuentro por ningún lado como hacerlo y como si fuera poco me tira errores de sintaxis :S.. slds!
  #2 (permalink)  
Antiguo 14/10/2008, 14:10
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Ordenar una tabla en base a otra tabla

Podrias probar con:

SELECT id_cliente FROM productos JOIN clientes ON (productos.id_cliente = clientes.id) ORDER BY clientes.nombres
__________________
See you... y Tolkien... mucho Tolkien...
  #3 (permalink)  
Antiguo 14/10/2008, 14:45
Avatar de matuteworld  
Fecha de Ingreso: octubre-2007
Ubicación: San Miguel de Tucuman, Tucuman
Mensajes: 79
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Ordenar una tabla en base a otra tabla

anda perfecto!! muchisimas gracias.. tendrias que ver la linea que creaba yo jaja.. y vos con esa sola haces todo... muchas gracias.. estoy empezando a realizar consultas avanzadas.. y este foro me es de gran ayuda...

ahora surgio otro detalle...

entran 2 variables por $_get en este caso serian... $id_cliente y $id_set que son pertenecientes a "productos", lo que tendria que hacer es darme los registros que cumplan con esa condicion y ordenarlos por "nombre" en clientes.

repito lo que me mandaste antes anda perfecto.. pero cuando pongo la condicion WHERE me tira error :S..


slds! hasta la proxima!

Última edición por matuteworld; 14/10/2008 a las 14:57 Razón: Nuevo problemita..
  #4 (permalink)  
Antiguo 14/10/2008, 15:08
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Ordenar una tabla en base a otra tabla

tenes que agregar la condicion del WHERE antes del ORDER BY y despues del ON del JOIN...

SELECT id_cliente FROM productos JOIN clientes ON (productos.id_cliente = clientes.id) WHERE 1 ORDER BY clientes.nombres

no entiendo algo, si a vos te pasan la ID del cliente para devolver una lista de productos, que caso tiene ordenarlo por cliente si es uno solo cliente?
en el caso de ser la id del producto no hay inconveniente

Tenes que tener encuenta que al estar usando un JOIN, el campo que llamas tiene que estar referenciado por la tabla en que se encuentra: nombre_tabla.nombre_campo (no es requisito si los nombres no se repiten entre tablas, si por ejemplo tenes "id_cliente" en las dos tablas, si o si necesitas poner el nombre de la tabla adelante).
__________________
See you... y Tolkien... mucho Tolkien...
  #5 (permalink)  
Antiguo 14/10/2008, 15:37
Avatar de matuteworld  
Fecha de Ingreso: octubre-2007
Ubicación: San Miguel de Tucuman, Tucuman
Mensajes: 79
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Ordenar una tabla en base a otra tabla

listo.. quedo barbaro... muchisimas gracias..

si entiendo bien el JOIN lo que hace es juntarme 2 tablas en 1.

y ON funciona como WHERE?

lo que hago es filtrar la tabla de "productos" por id_cliente y por id_set que le llamo yo.. y ordenarlo por el nombre del cliente cargado en otra tabla "clientes", por eso necesito esas 2 variables.. y ademas.. tengo en las 2 tablas un campo "borrado" que me dice si es visible o no.

te muestro como quedo

Cita:
SELECT * FROM productos JOIN clientes ON ( clientes.id = '$id_cliente' AND productos.borrado = 'NO' AND clientes.borrado = 'NO' AND productos.id_cliente = '$id_cliente' AND productos.id_set = '$id_set' AND productos.principal = 'SI' ) ORDER BY clientes.nombre ASC
me podrias aconsejar si esto es optimo? de andar anda... pero veo que repito la consulta de variables y por una cuestion de sintaxis no me animo a modificar.. jaja siempre tira error.. o seria mejor que use el WHERE como me dijiste vos? desde ya muchas gracias un saludo!
  #6 (permalink)  
Antiguo 14/10/2008, 16:06
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Ordenar una tabla en base a otra tabla

Quedaria mas prolijo:

SELECT * // ------> aca si podes elegir los campos a mostrar en vez de levantar todo, es mas rapido
FROM productos
JOIN clientes ON ( clientes.id = productos.id_cliente ) // --> aca solo los valores que relacionan las dos tablas
WHERE productos.borrado = 'NO'
AND clientes.borrado = 'NO'
AND productos.id_cliente = '$id_cliente'
AND productos.id_set = '$id_set'
AND productos.principal = 'SI'
ORDER BY clientes.nombre ASC

El problema que digo yo es... Si vos ya TENES la id del cliente a mostrar, no le veo la razon a ordenarlo por nombre... ya que por mas que vengan 10 productos.. el cliente siempre es el mismo...

id_cliente = 1 | id_producto = 8
id_cliente = 1 | id_producto = 2
id_cliente = 3 | id_producto = 8
id_cliente = 5 | id_producto = 4
id_cliente = 1 | id_producto = 1

cuando hagas la busqueda te va a devolver

id_cliente = 1 | id_producto = 8
id_cliente = 1 | id_producto = 2
id_cliente = 1 | id_producto = 1

donde id_cliente = clientes.id => Juan Perez
__________________
See you... y Tolkien... mucho Tolkien...
  #7 (permalink)  
Antiguo 14/10/2008, 16:23
Avatar de matuteworld  
Fecha de Ingreso: octubre-2007
Ubicación: San Miguel de Tucuman, Tucuman
Mensajes: 79
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Ordenar una tabla en base a otra tabla

ahi esta el tema jaja.. la primera consulta es sin "id_cliente" y sin "id_Set", tonces quiero que me tire el primero por abecedario y me muestre los datos...

muchas gracias.. ya lo tengo andando.. fue una solucion muy rapida :D.. un saludo.. buena predisposicion para ayudar!
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 06:40.