私はすべてを見てきましたが、残念ながら、私が間違っていることを理解できないようです。私は、MySQLサーバーを使用する個人的な財務管理アプリケーションを開発しています。この問題のために、私は働いている4つのテーブルを持っています。カラム値に基づく条件付きジョイン
TRANSACTIONS
テーブルには、SECONDARYCATEGORIES
テーブルとBILLS
テーブルのプライマリキーを参照するカラムCATID
とBILLID
が含まれています。 TRANSACTIONS
とBILLS
の両方の表には、PRIMARYCATEGORIES
表の主キーを参照する列PCATID
があります。
TRANSACTIONS
テーブルの「量」列を合計し、プライマリキーをPCATID
から返し、その値に関連付けられているすべてのレコードの合計を返すSQLクエリを作成しています。 BILLID
が-1
に設定されている場合、それはSECONDARYCATEGORIES
SECONDARYCATEGORIES.ID = TRANSACTIONS.CATID
でPCATID
を見つける必要があり、(-1
はこれが法案されていないことを示すため)、それ以外の場合は、BILLS.ID
がTRANSACTIONS.BILLID
に一致するBILL
レコードからPCATID
を見つける必要があります。
私は(当然、有効ではありませんSQL)このような何かを探しています:
SELECT
SECONDARYCATEGORIES.PCATID,
SUM(TRANSACTIONS.AMOUNT)
FROM
TRANSACTIONS
IF (BILLID = -1) JOIN SECONDARYCATEGORIES ON SECONDARYCATEGORIES.ID = TRANSACTIONS.CATID
ELSE JOIN SECONDARYCATEGORIES ON SECONDARYCATEGORIES.ID = BILLS.CATID WHERE BILLS.ID = TRANSACTIONS.BILLID
私はなど、文IF、さまざまなJOINの無数を試してみましたが、私はちょうど作るように見えることはできませんこの作品。私はBILLID
の値に基づいてこれを別のSQLクエリに分割し、値を合計することを考えましたが、可能であれば、このすべてを1つのSQLクエリで実行したいと思います。
私はここで何かが分かりません。どのような助けも非常に感謝しています。
編集:BILLSテーブルを記述するのを忘れました。これには、プライマリカテゴリ、ID、および説明的なデータが含まれています。
ここで2つの左外部結合が問題を解決できるはずです。あなたのBILLSテーブルが見つかりません – maSTAShuFu
ここにはBILLSテーブルはありません。 – Eric
サンプルデータと期待される出力を提供できますか? –