勉強したことのメモ

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でデータがあれば上書き、無ければ挿入する

既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...

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

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

MySQLで経度緯度から半径○Kmのデータを抽出する方法

経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度 ...

MySQLでテーブルの詳細情報を取得

MySQLでテーブルの詳細情報を取得 desc テーブル名; ■サンプル mys ...

MySQLで大文字小文字

半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...