MySQLで複数のコード及びスコアで検索して、スコアが無いものは0を取得する
2014/07/02
やりたかった事は下記の通り。
・ユニークなコードがあり、そのコードに対して複数のスコアがつけられる
・全てのコードは他の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でデータがあれば上書き、無ければ挿入する
既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...
-
MySQLでdatetime型のカラムから秒は省いて検索する方法
MySQLでdatetime型のカラムに対して「2022-10-07 10:30 ...
-
MySQLで経度緯度から半径○Kmのデータを抽出する方法
経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度 ...
-
MySQLでテーブルの詳細情報を取得
MySQLでテーブルの詳細情報を取得 desc テーブル名; ■サンプル mys ...
-
MySQLで大文字小文字
半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...