2017-12-01 14 views
-2

私のmysqlステートメントで助けが必要です。MySQLステートメントSUMの場合のみ

これが私のテーブル "車" である:

| Manufact | Model | 
--------------------- 
| Audi  | 2  | 
| Audi  | 2  | 
| Audi  | 4  | 
| Audi  | 4  | 
| Audi  | 8  | 
| Audi  | 8  | 
| Audi  | 8  | 

私はSUM()を使用したいです。

SELECT 
    SUM(model) as number 
FROM 
    cars 

しかし、私は、一度だけ、合計を合計したくない!私は数を取得したい:20(2 + 2 + 4 + 4 + 8)!

動作しますか?

+1

SELECT SUM(DISTINCTモデル)を使用します。あなたに(2 + 4 + 8)を与えるでしょう 2と4を8と区別するものは何ですか? –

+4

は1つの8にしか接続されていないロジックはありますか? – isaace

+1

私はこれがSQL文で行われるとは思わない。あなたは*を選択し、結果をphp(連想/数値配列)で取得し、そこにフィルタリングする必要があります。 –

答えて

0

は、クエリの下に試してみてください。

SELECT SUM(Model) + 8 FROM cars WHERE Model != 8; 
// Result 20 (2+2+4+4+8) 
0
SELECT * FROM cars WHERE Manufact ='Audi' 

このクエリは、あなたのアウディに等しいmanufactフィールドを持っているすべてのフィールドを取得します。それ以外のマークの場合は、where節を削除するだけです。

クエリを実行して結果をフェッチすると、結果は例のために$resultという名前の配列に格納されます。 array_sumを使用して

あなたがそのようにしたい列の合計を取得することができます:あなたは複数のレコードを使用している場合

$sum=array_sum['result]['Model'] 
echo $sum; 

これは、この例や、あなたの一般的な結果のために20を返します。 PHPはまた、あなたの質問

0

にタグ付けされているよう は、PHPソリューションを提供することは、これはManufactModel列でカウントグループを見つけ、

select sum(number) from 
(
    SELECT SUM(Model) as number FROM cars where Model != 8 
    UNION ALL 
    SELECT SUM(distinct Model) as number FROM cars where Model = 8 
) as a 
+0

ありがとうございました!できます! – perplexa

+0

あなたは大歓迎です!あなたが好きなら、あなたはその小切手をクリックしてページ上でそれを受け入れることができます。 – isaace

0

アンの周りに別の方法を動作するはずです。そして、サブクエリとしてこれを使用して車の数値で表現CASE

クエリ

select t.`Manufact`, 
sum(t.`Model` * (case t.`Model` when 8 then 1 else t.`model_count` end)) as `sum` from(
    select `Manufact`, `Model`, count(`Model`) as `model_count` 
    from `cars` 
    group by `Manufact`, `Model` 
) t 
group by t.`Manufact`; 
関連する問題