行の配列を返す mysql クエリがあります。1 つの列から個別の値の数を取得する必要があります。私のクエリは動的で、php によって評価される複数の条件が WHERE 句を変更するため、すべての動的条件の重複を避けるために、可能であれば 1 つのクエリ内ですべてを実行したいと考えています。
これが私がやりたいことの簡単なバージョンです -
これが私のSQLテーブルの非常に単純なバージョンを表している場合:
Column1, Column2, Column3, Group, Active
a , b , c , 1 , YES
d , e , f, , 2 , YES
g , h , i , 1 , YES
j , k , l , 3 , NO
私はこのようなことをしたいと思います:
"SELECT Column1, Column2, Column3, Group,
(SELECT COUNT(DISTINCT Group) FROM 'table') AS totalGroups
FROM 'table'
WHERE Active like 'YES';"
結果を報告できるようにしたい:
a) クエリの合計行
mysql_num_rows($result) should equal = 3
b) 異なるグループの総数
$phparray['totalgroups'] should equal = 2
(Right now, 'totalgroups' equals = 3)
(1) できるか?現在、'totalgroups' は 2 ではなく 3 を返します。クエリの残りの部分と同じ "Where" 句を使用するようにできますか?
はるかに複雑な実際のコードでは、2 だけを返したいのに、カウントが 1,945 を返しています。:)
(2) より良い方法はありますか?
php のarray_unique()
とを試しましarray_count_values()
たが、多次元配列では機能せず、正しく動作しarray_unique()
ませんでした。array_count_values()
私は他の多くの質問を見ましたが、誰かがこの特定の質問をしている場所を見つけることができませんでした. MYSQL マニュアルの RE サブクエリを確認しましたが、Where 句を共有できるかどうかについては触れられていませんでした。
この質問に答えるために (上記のデモ表現ではなく) 私の実際のコードが必要な場合は、お知らせください。すべての php 動的修飾子を含む 2 ページを超えるので、わかりやすくするためにデモ コードを記述することにしました。