1

特定のフェスティバルの支払いの合計 IN/OUT を計算する 2 つの独立したクエリがあります。IN/OUT は ENUM 値で指定されます (以下を参照)。 ここに画像の説明を入力 ここに画像の説明を入力

クエリを個別に実行すると、選択したpayment_type IN または OUTに基づいて SUM の正しい出力が得られます。私の問題は、それらを 1 つのクエリに結合して、以下のように IN/OUT 用に 2 つの別々の列を作成しようとするときです。

ここに画像の説明を入力

MySQL に「オペランドには 1 列を含める必要があります」というエラーがあります。いくつかの調査を行った後、サブクエリが間違っていると思いますが、それを解決する方法がよくわかりません。

助けてくれてありがとう...

トータルイン

SELECT
    SUM(`payment`.`pmt_amount`) AS `TOTAL IN`
    , `payment`.`pmt_type`
    , `festival`.`id_festival`
FROM
    payment
    INNER JOIN festival
        ON (`payment`.`id_festival` = `festival`.`id_festival`)
WHERE (`payment`.`pmt_type` LIKE '%IN'
    AND `festival`.`id_festival` = 1);

ここに画像の説明を入力

そしてトータルアウト

SELECT
    SUM(`payment`.`pmt_amount`) AS `TOTAL OUT`
    , `payment`.`pmt_type`
    , `festival`.`id_festival`
FROM
    payment
    INNER JOIN festival
        ON (`payment`.`id_festival` = `festival`.`id_festival`)
WHERE (`payment`.`pmt_type` LIKE '%OUT'
    AND `festival`.`id_festival` = 1);

ここに画像の説明を入力

組み合わせた

SELECT
  festival.id_festival,
  payment.pmt_amount,
  payment.pmt_type,
  (SELECT
      payment.pmt_type,
      SUM(payment.pmt_amount) AS `TOTAL OUT`
    FROM payment
    WHERE payment.pmt_type LIKE '%OUT'),
  (SELECT
      payment.pmt_type,
      SUM(payment.pmt_amount) AS `TOTAL IN`
    FROM payment
    WHERE payment.pmt_type LIKE '%IN')
FROM payment
  INNER JOIN festival
    ON payment.pmt_amount = festival.id_festival
WHERE festival.id_festival = 1

ここに画像の説明を入力

4

2 に答える 2