0
同じタイプの情報(ID、属性、および金額)を含む3つの列を含む2つの表があります。私はそれらを組合で結合し、その組合を、それらをフィルタリングするためのIDのリストを含む別の表と結合し、共通の属性を合計したいと考えています。Mysqlはさらに、結合結果の結合フィールドを使用して結合します。
table_a table_b table_ids
id attr amount id attr amount uid a_id
1 'atr1' 10 1 'atr2' 4 'id1' 1
1 'atr2' 5 2 'atr3' 2 'id2' 2
2 'atr3' 7 2 'atr1' 11
3 'atr1' 8
私は
SELECT table_ids.uid, t.attr, SUM(t.amount)
FROM table_ids
JOIN (SELECT CONCAT('a', id) AS comb_id, attr, amount FROM table_a
UNION ALL
SELECT CONCAT('b', id) AS comb_id, attr, amount FROM table_b
) t
ON CONCAT('a', table_ids.a_id) = t.comb_id
GROUP BY t.attr
を試みたが、最後のマッチングA_ID和のために最後に一致した行量回行にマッチする数の属性を取得しています。
(属性が、私もまだ動作するように1つのフィルタリングテーブルをもらっていないtable_b以上のidのフィルタリングを持つ別のテーブルがあります。)
CONCATが大量に減速するので、あなたはあまりアドバイスされていないように、CONCATなしで数値を使用するだけではなく、このようにしているように感じます。例を入力します - table_b idsがどこに参加するかによって大きく異なります –