これは非常に簡単ですが、3時間検索しても機能しません。
シナリオは、私は 2 つのビジネスの個々のコストを持つデータベースを持っており、各ビジネスのコストを合計して画面に表示したいと考えています。これで、これは十分に単純で、2 つの SELECT で簡単に実行できることがわかりました。しかし、私はこれを1つのクエリで行いたいです!
DB
|cost|business|
|100 | 1 |
|200 | 2 |
|200 | 1 |
|300 | 2 |
上の表から、b1 = 300 および b2 = 500 であることがわかります。しかし、私のクエリはどれも機能しません!
UNION と CASE を試しましたが、よくわかりません。私のクエリ:
初挑戦:
$buscost = mysql_query("SELECT FORMAT(sum(`cost`),2) as `b1` FROM `outgoing` WHERE `business`=1
UNION
SELECT FORMAT(sum(`cost`),2) as `b2` FROM `outgoing` WHERE `business`=2")
or die(mysql_error());
$buscost = mysql_fetch_array($busowe);
2回目の試行:
$buscost = mysql_query("SELECT
CASE WHEN `business` = 1 THEN FORMAT(sum(`cost`),2) END AS `b1` ,
CASE WHEN `business` = 2 THEN FORMAT(sum(`cost`),2) END AS `b2`
FROM `outgoing` WHERE `active`='yes' ");
$buscost = mysql_fetch_array($buscost);
*コストは float(11,2) として設定されます。
ここで同様の質問を見つけましたが、答えはどれも役に立ちませんでした。
ああ、もし iprint_r
の場合、最初は b1 の合計のみをフェッチし、b2 は存在しません! そして、私が取得する2番目の配列は、最初のケースの結果セットであり、ケース2の「b2」は空ですが、存在します!! テーブルを確認しましたが、両方のビジネスのテスト データがそこにあります。
アドバイスや解決策を教えてください。
active
編集:言及するのを忘れたすべての結果も where ='yes'でフィルタリングする必要があります