2016-10-08 17 views
-2

こんにちは皆さんは以下のようにコンマで区切られた単一の列に入ってくる複数の値の連結に関する質問があります。複数の値をSQLで連結する方法

たとえば、データを取得しているレポートがありますが、1つの列に対して5つの値があるため、同じ行がすべての列に対して繰り返されているため、その特定の列の5つの値すべてを連結します。

どうすればいいのか教えてください。 は5つの値を取得しているクエリです。これらの値を1行にカンマで区切って入力します。

SELECT PAC.PACKAGED_ITEM_GID 
FROM SHIPMENT SH, ORDER_MOVEMENT OM, 
    ORDER_MOVEMENT_D OMD, S_SHIP_UNIT SSU, S_SHIP_UNIT_LINE SUL, 
    PACKAGED_ITEM PAC 
WHERE OM.SHIPMENT_GID = SH.SHIPMENT_GID 
AND OM.ORDER_MOVEMENT_GID = OMD.ORDER_MOVEMENT_GID 
AND OMD.S_SHIP_UNIT_GID = SSU.S_SHIP_UNIT_GID 
AND SSU.S_SHIP_UNIT_GID=SUL.S_SHIP_UNIT_GID 
AND SUL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID 
AND SH.SHIPMENT_GID = 'ULA/SAO.5000070143' 
+0

'、出荷SH、ORDER_MOVEMENT OM、ORDER_MOVEMENT_D OMD、S_SHIP_UNIT SSU、S_SHIP_UNIT_LINE SUL FROM PAC.PACKAGED_ITEM_GIDを選択PACKAGED_ITEM PAC OM.SHIPMENT_GID = SH.SHIPMENT_GID AND \t OM.ORDER_MOVEMENT_GID = OMD.ORDER_MOVEMENT_GID AND OMD.S_SHIP_UNIT_GID = SSU.S_SHIP_UNIT_GID AND SSU.S_SHIP_UNIT_GID = SUL.S_SHIP_UNIT_GID AND SUL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID AND SH.SHIPMENT_GID = 'ULA/SAO.5000070143' –

+0

サンプルデータ、望ましい結果、およびクエリを提供質問*のテキストに*を使用しています。それに探しのための –

+0

おかげで私はそれ:)出荷SH FROM GROUP WITHIN –

答えて

0

MySQLの文字列集約関数はGROUP_CONCATです。

あなたは1980年代に使用された結合構文を使用しています。どうして?いつ、どこでそれを学びましたか?使用する適切なANSIではなく、参加する:

SELECT GROUP_CONCAT(DISTINCT pac.packaged_item_gid) AS packaged_item_gids 
FROM shipment sh 
JOIN order_movement om ON om.shipment_gid = sh.shipment_gid 
JOIN order_movement_d omd ON omd.order_movement_gid = om.order_movement_gid 
JOIN s_ship_unit  ssu ON ssu.s_ship_unit_gid = omd.s_ship_unit_gid 
JOIN s_ship_unit_line sul ON sul.s_ship_unit_gid = ssu.s_ship_unit_gid 
JOIN packaged_item  pac ON pac.packaged_item_gid = sul.packaged_item_gid 
WHERE sh.shipment_gid = 'ula/sao.5000070143'; 

あなたはs_ship_unit_lineでのみ使用可能ですpackaged_item_gidを、選択しているとして、あなたは一人でこの表から選択し、IN句で一致出荷を調べることができます。

SELECT GROUP_CONCAT(packaged_item_gid) as packaged_item_gids 
FROM s_ship_unit_line 
WHERE s_ship_unit_gid in 
(
    select ssu.s_ship_unit_gid 
    FROM shipment sh 
    JOIN order_movement om ON om.shipment_gid = sh.shipment_gid 
    JOIN order_movement_d omd ON omd.order_movement_gid = om.order_movement_gid 
    JOIN s_ship_unit  ssu ON ssu.s_ship_unit_gid = omd.s_ship_unit_gid 
    WHERE sh.shipment_gid = 'ula/sao.5000070143' 
); 
関連する問題