0

更新:どうもありがとう。あなたは私の賛成票を持っています。私の問題はまったく別のもののようです。

TBL_INVTY から sum(QTY) を取得しようとしていますが、このテーブルを TBL_ITEM と正しく結合できません。私にとって物事を複雑にするこの列PARENT_CODEがあります。このように説明すると分かりやすいです...

TBL_ITEM

+------+-------------+
| CODE | PARENT_CODE | 
+------+-------------+
|    2 |        NULL |
|   2A |           2 |
|   2B |           2 |
|    3 |        NULL |
|    4 |        NULL |
+------+-------------+

TBL_INVTY

+------+-----+
| CODE | QTY |
+------+-----+
|    2 |   2 |
|   2A |   4 |
|   2B |   1 |
|    3 |   3 |
|    4 |   5 |
+------+-----+

そして、これに到達します:

+------+-----+
| CODE | QTY |
+------+-----+
|    2 |   7 |
|    3 |   3 |
|    4 |   5 |
+------+-----+
4

4 に答える 4

2

これがどのように機能するかについての大まかな推測は次のとおりです。

SELECT IFNULL(tbl_item.parent_code, tbl_invty.code) AS t_code, SUM(qty) AS t_qty
  FROM tbl_invty
  LEFT JOIN tbl_item ON tbl_invty.code=tbl_item.code
  GROUP BY t_code

ここでのキーはIFNULL、親 ID を選択するために使用するか、何も存在しない場合は通常の ID を使用することです。

于 2013-04-24T05:54:22.367 に答える
2
SELECT t_code,sum(qty) from
(SELECT IFNULL(parent_code, code) as t_code, code 
FROM tbl_item) a left join tbl_invty b on a.code=b.code
GROUP BY a.t_code

http://www.sqlfiddle.com/#!2/749b5/1

于 2013-04-24T06:10:45.030 に答える
1

これを試して 、

SELECT CONVERT(code, SIGNED) as code ,sum(QTY) from TBL_INVTY group by CONVERT(code, SIGNED);

SQL フィドルのデモ

于 2013-04-24T06:05:27.133 に答える
1

SQLFIDDLE デモ

select CASE WHEN TBL_ITEM.PARENT_CODE IS NOT NULL 
       THEN
        TBL_ITEM.PARENT_CODE 
       ELSE
        TBL_ITEM.code 
       END, SUM(Qty)
FROM
TBL_INVTY
join TBL_ITEM on TBL_INVTY.code=TBL_ITEM.code

GROUP BY 
CASE WHEN TBL_ITEM.PARENT_CODE IS NOT NULL 
       THEN
        TBL_ITEM.PARENT_CODE 
       ELSE
        TBL_ITEM.code 
       END
于 2013-04-24T06:11:30.127 に答える