Agrupacion tabla


#1

Hola, a ver si me explico bien

Tengo una tabla de ordenes de fabricacion que tiene varios registros en
los que varios campos se repiten, ejemplo

Orden Producto Kilos
Fabricacion Orden componente Kilos Componente
12345678 aaaaa 2535 578978 32.50
12345678 aaaaa 2535 789932 50.5
12345678 aaaaa 2535 777777 32.5
.
.
.
.

22222222 bbbbb 1200 123456 25.50
22222222 bbbbb 1200 235888 30.50
.
.
.
3333333 aaaaaa 1100 888888 25.30
3333333 bbbbbb 1111 999999 35.25
.
.
y asi sucesivamente hasta 10 mas o menos

Me gustaria representarlo todo en un mismo registro, porque la finalidad
es que cuando me pidan un producto, representarle todas las ordenes de
ese producto es decir
si piene el producto aaaaa:

12345678 aaaaa 2535 578978 32.50 789932 50.5 77777 32.5 …
33333333 aaaaa 1100 888888 25.20 999999 35.25 …

Hay alguna forma de hacer esto? grabandolo en otra tabla o algo
parecido, es que me estoy perdiendo en cálculos , igual hay alguna
manera de hacerlo, mas facil.

Perdonad por el rollo.

Saludos y gracias


#2

Si no te entendido mal podrías modelarlo de la siguiente manera:

producto tiene varias órdenes
orden pertenece a un producto

Quedando algo tal que así en el modelo product:

has_many :orders,

Y en el modelo order:

belongs_to :product

De esta manera el objeto producto tendría el listado de pedidos con el
método orders.

Lourdes escribió:

.
3333333 bbbbbb 1111 999999 35.25
33333333 aaaaa 1100 888888 25.20 999999 35.25 …

Hay alguna forma de hacer esto? grabandolo en otra tabla o algo
parecido, es que me estoy perdiendo en cálculos , igual hay alguna
manera de hacerlo, mas facil.

Perdonad por el rollo.

Saludos y gracias


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)


#3

Hola Rafa, a ver si me explico mejor porque me lio yo sola.

En mi programa tengo una tabla que la estoy leyendo de un fichero de
texto, que se bajan al pc, los usuarios, desde otro programa (SAP).

En esa tabla tengo varios registros por orden de fabricación, que son
los componentes de la orden.

orden1 producto componente1 kilos1
orden1 producto componente2 kilos2
orden1 producto componente3 kilos3

orden2 producto1 componente1 kilos1
orden2 producto1 componente2 kilos2
orden2 producto1 componente3 kilos3

orden3 producto componente1 kilos1
orden3 producto componente2 kilos2
orden3 producto componente3 kilos3

lo que intento hacer es que cuando me pidan un producto, poder verlo
así en pantalla, en vez de vertical, en horizontal

orden producto componente1 kilos1 componente2 kilos2 componente3 kilos3
orden3 producto componente1 kilos1 componente2 kilos2 componente3 kilos3

es decir un registro por cada orden de fabricación.

Muchas gracias por tu contestación y saludos


#4

Hola, buenos dias Rafa.

Es un fichero de texto, que lo estoy cargando en una tabla de mi
aplicación, mediante un File.open , lo que no sé muy bien, es como
almacenarlo para despues representarlo como quiero. Supongo que sería
mejor cargarlo en un registro por cada orden, desde el principio, para
poder representarlo despues, pero entonces tengo una tabla un pongo
chunga, con componente1, kilos1, componente2, kilos2,
componente3,kilos3… así por lo menos hasta 15.

Pero no sé si es la forma correcta de hacerlo en rails, antes lo hacía
en access.

Saludos y gracias.


#5

Ahora ya he comprendido lo que quieres hacer. Pero lo que no me queda
muy claro es como lo quieres almacenar ¿cómo una línea de texto en una
tabla? o ¿quieres tenerlo en tablas y de ahí sacar el listado?

Lourdes escribió:

orden1 producto componente3 kilos3
así en pantalla, en vez de vertical, en horizontal

orden producto componente1 kilos1 componente2 kilos2 componente3 kilos3
orden3 producto componente1 kilos1 componente2 kilos2 componente3 kilos3

es decir un registro por cada orden de fabricación.

Muchas gracias por tu contestación y saludos


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)


#6

Hola Rafa, muchas gracias por tu ayuda.

Si lo que necesito es eso, pero no sé como hacerlo en rails. Estaba
intentando copiarme una consulta de access y hacerlo por un

find_by_sql(“TRANSFORM First(ordenes.sap) AS PrimeroDesap
SELECT ordenes.order_number, ordenes.material_number
FROM ordenes
GROUP BY ordenes.order_number, ordenes.material_number
PIVOT ordenes.component_sequence”)

Pero me da errores. “sintaxis incorrecta cerca de ‘ordenes’”

En fin seguiré intentadolo.

Saludos y siento la currada que te has dado!!!


#7

Lourdes wrote:

Pero no sé si es la forma correcta de hacerlo en rails, antes lo hacía
en access.

Lo que he entendido que necesitas es una Pivot Table [1], ayer no te
imaginas la googleada que hice para intentar ayudarte pero
desafortunadamente no encontré nada semejante en Rails, quizá algún
compañero tenga una alternativa que resuelva tu necesidad.

Saludos.

[1] http://en.wikipedia.org/wiki/Pivot_table


Jaime Mora R.


#8

Estoy utilizando sql

saludos


#9

Que base de datos(SGBD) estás usando?

Lourdes escribió:

Pero me da errores. “sintaxis incorrecta cerca de ‘ordenes’”

En fin seguiré intentadolo.

Saludos y siento la currada que te has dado!!!


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)


#10

Hola Amaia muchas gracias.

Estoy en ello, pero me puedes decir para que sirve exactamente el
:through

Saludos


#11

SQL es el lenguaje que usas para manejar los datos del sistema gestor de
bases de datos(SGBD). Sería interesante saber que servidor de bases de
datos(SGBD) estás usando (por ej. Oracle, SQL Server,…). Cada
empresa(Oracle, Microsoft, MySQL,…) implementa el standard SQL hasta
donde puede y además añade funciones o modifica algunas definidas en el
standard.

Saber que SGBD estás usando puede ser útil para saber si tiene alguna
función de pivotaje de datos tu sistema.

Saludos!

Lourdes
escribió:> Estoy utilizando sql

saludos


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)


#12

Hola

No sé si he entendido bien lo que planteas, porque tampoco entiendo bien
las otras respuestas, así que puede que lo que te cuento no tenga nada
que ver con lo que necesitas pero ahí va lo que yo haría.

Haces tres modelos, la orden, el componente y un modelo intermedio que
relacione los dos y que tenga un atributo cantidad.

class Orden < ActiveRecord::Base
has_many :items
has_many :componentes, :through => :items
end

class Item < ActiveRecord::Base
belongs_to :ordenes
belongs_to :componentes
end

class Componente < ActiveRecord::Base
has_many :items
has_many :ordenes, :through => :items
end

En Item pones un campo cantidad y para cada linea del fichero que estas
importando creas o buscas la orden, creas o buscas el componente y creas
un objeto item con orden_id, componente_id y cantidad.
Para lo de crear o buscar creo que hay un metodo
create_or_find_by(atributo).

Para representar la lista de componentes de la orden algo como

orden.items.each do |item|
item.componente.nombre
item.cantidad
end

En una aplicación que estoy desarrollando con Jaime lo hemos hecho así
para productos químicos que contienen sustancias toxicas, y que cada uno
de ellos contiene las sustancias en una concentración diferente. Yo creo
que sirve el mismo planteamiento.

Ya me dirás si te sirve…

saludos,
Amaia


~~~ ~~~
Amaia C.
~~~ ~~~
Dabne Tecnologías de la Información
c/Los Madrazo, 16 - 3º 4
28014 Madrid
Tel.: (+34) 91 369 17 50
www.dabne.net
~~~ ~~~

Lourdes escribió:


#13

Lourdes
escribió:> Hola Amaia, muchas gracias, lo he probado y es perfecto.

Rafa muchas gracias por ayudarme.

Saludos

Hola Lourdes

Me alegro de que te sirva :slight_smile:

Lo del :through es para poder hacer orden.componentes y obtener la lista
de componentes de la orden. Es como si fuese una
relaciónhas_and_belongs_to_many pero usando un modelo intermedio que es Item,
que puede tener atributos para la
relación.Seguro que hay gente por aquí que sabe explicarlo mejor :wink:

Hay una explicación en inglés en
http://blog.hasmanythrough.com/2006/04/20/many-to-many-dance-off

En los archivos de esta lista he encontrado esta
http://www.ruby-forum.com/topic/82815#145735

Saludos


~~~ ~~~
Amaia C.
~~~ ~~~
Dabne Tecnologías de la
Informaciónc/Los Madrazo, 16 - 3º 4
28014 Madrid
Tel.: (+34) 91 369 17 50
www.dabne.net
~~~ ~~~


#14

Amaia, muchas gracias de nuevo.

Saludos.

Lourdes


#15

Hola Amaia, muchas gracias, lo he probado y es perfecto.

Rafa muchas gracias por ayudarme.

Saludos