2016-08-21 18 views
3

私はfleet.vehicleモデル(id)と関連しているsale.orderモデルにmany2manyフィールドを作成しました。それはフォローのイメージにあったていますどのように販売注文ごとにmany2manyフィールドの値を取得するにはどうすればよいですか?

IMAGE 1:enter image description here

まあ、 'x_vehiculo' フィールドそれはフォローの画像で示したですどのように、複数選択フィールドです:

イメージ2:enter image description here

アイデアは、各販売注文に対して、私はその1台以上の車両を保管することができるということです。

問題は、私がSGB Postgresql(PgAdmin III)でクエリを作成すると、各販売注文のx_vehiculo 'フィールドの値がわかりません。

IMAGE 3:enter image description here

各sale.orderは「x_vehicle」マルチ選択フィールドの値を取得することができますする方法はありますか?

誰かが私を助けることができたらどうかしてください。私はとても感謝しています。あなたはそんなに

答えて

4

この関係はsale_orderテーブルには格納されません。 many2manyであるため、リレーショナルテーブルに格納されます。あなたのスクリーンショットに基づいて、リレーショナル表には、このいずれかになります。

select so.name, fv.name 
from sale_order so 
left join x_fleet_vehicle_sale_order_rel rel on (rel.sale_order_id = so.id) 
left join fleet_vehicle fv on (fv.id = rel.fleet_vehicle_id); 

これは、それぞれの組み合わせのためにあなたに行を与える:x_fleet_vehicle_sale_order_rel

あなたがそうのように、このテーブルを参加する必要があり、車を照会するにはsale.orderおよびfleet.vehicle。あなたがグループにしたい場合は、それらを販売順序によって、あなたはこれを行うことができます。

select so.name, array_agg(fv.name) as vehicles 
from sale_order so 
left join x_fleet_vehicle_sale_order_rel rel on (rel.sale_order_id = so.id) 
left join fleet_vehicle fv on (fv.id = rel.fleet_vehicle_id) 
group by so.name; 

これは、そのために添付fleet.vehicle名のリストと、各sale.orderに1つの行を返します。

+0

ありがとう、私はそれを理解することができ、あなたのサポートでそれを行う。 – beriliox

1

おかげでフィールドには、そのように独立した「参加」テーブルがそれのために作成されようとしているMany2many関係だ、あなたはそれを宣言したテーブルの上に利用できるようにするの名前を行っていませんそのテーブルは

x_fleet_vehicle_sale_order_rel

そのテーブルだから、あなたが宣言テーブルの代わりに、そのテーブルを照会しなければならない分野sale_order_idfleet_vehicle_id

が含まれていますですd x_vehiculo

関連する問題