mysql&PHPにて下記の表から
name | test1 | test2 | test3 |
---|---|---|---|
A氏 | 90 | 50 | 90 |
B氏 | 80 | 50 | 60 |
C氏 | 50 | 90 | 90 |
D氏 | 90 | 90 | 90 |
90の値の数を数えたい
希望する結果は
7つ
test1〜test3までで同じ人出会っても90を2回取っていたら2回とカウントする
PHP
1 $query = "SELECT sum(cnt) AS cnt FROM ("; 2 $query.= " SELECT count(*)as cnt FROM testdb WHERE test1=90"; 3 $query.= " UNION SELECT count(*)as cnt FROM testdb WHERE test2=90"; 4 $query.= " UNION SELECT count(*)as cnt FROM testdb WHERE test3=90"; 5 $query.= ") AS t1"; 6 $result = $db->prepare($query); 7 $result->execute(); 8 $row= $result->fetch(PDO::FETCH_ASSOC);
としてみましたが、結果は3とレコードの数だけ返ってきます。
単純にそれぞれで検索して、結果を足せばいいのですが、処理が遅いので対策を考えています。
PHP
1 $query.= " SELECT count(*)as cnt FROM testdb WHERE test1=90"; 2 $result = $db->prepare($query); 3 $result->execute(); 4 $row1= $result->fetch(PDO::FETCH_ASSOC); 5 6 $query.= " SELECT count(*)as cnt FROM testdb WHERE test2=90"; 7 $result = $db->prepare($query); 8 $result->execute(); 9 $row2= $result->fetch(PDO::FETCH_ASSOC); 10 11 12 $query.= " SELECT count(*)as cnt FROM testdb WHERE test3=90"; 13 $result = $db->prepare($query); 14 $result->execute(); 15 $row3= $result->fetch(PDO::FETCH_ASSOC);
どのようにするのがいいのでしょうか
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/03 12:05
2020/02/04 00:38