勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLで複数のコード及びスコアで検索して、スコアが無いものは0を取得する

   2014/07/02  MySQL

やりたかった事は下記の通り。

・ユニークなコードがあり、そのコードに対して複数のスコアがつけられる
・全てのコードは他のSQL文で取得している状況
・スコアは1~3まである
・スコアはつけられることもあるし、つけられないこともある
・コード&特定のスコアを検索してあった場合はスコアがつけられたカウント数を、
つけられてなかったら0がほしい
・出来ればSQL1回、無理なら3回でいきたい。

前に勉強したCOALESCE使えるかなと思ったけど、
どうにも難しそう。ただ、色々やってみるとすごく単純な手法でいけた。

$sql = "
SELECT
count(code) as cnt,
code,
score
FROM
review
WHERE
~~(codeが複数)~~
AND score = 1
GROUP BY code;
";
$row = mysql_query($sql);
while ($rs = mysql_fetch_array($row)) {
$test[1][$rs["code"]] = $rs["cnt"]; //コード付きの連想配列にスコアのカウントを入れる
}
if (!$test[1]["12345"]) { //コードで検索してあればari、無ければnasiが出力される
echo 'nasi';
} else {
echo 'ari';
}

無い配列に対してif文かけてもOKということが分かったので
覚えておく。

 - MySQL

  関連記事

MySQLでdatetime型のカラムから秒は省いて検索する方法

MySQLでdatetime型のカラムに対して「2022-10-07 10:30 ...

MySQLでランダムに取得

SELECT カラム名 FROM テーブル名 ORDER BY RAND() L ...

MySQLでCSVから列を指定してインポート

MySQLでCSVからデータをインポートしたかった。またエクセル風にいうA列はi ...

MySQL/Apacheの再起動

忘れないようにメモ。 ■MySQL service mysqld restart ...

MySQLiでINSERT文

MySQLiでINSERT文 ■ソース $mysqli = new mysqli ...