勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

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

  関連記事

msyql-image
SQLで同じ値を複数のレコードに対してUPDATE

やりたかった事は、複数のレコードに対して 同じ値に更新したいというもの。 $sq ...

msyql-image
MySQLでserver has gone~というエラー

MySQLで「MySQL server has gone away」というエラー ...

msyql-image
MySQLでJOINの高速化

JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには ...

msyql-image
MySQLでランダムに取得

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

msyql-image
sshでMySQLの操作

今までMySQLを操作するときはphpmyadminから 行っていたけど、php ...

msyql-image
MySQLのREGEXPで半角記号を検索したい場合

MySQLのREGEXPで半角記号を検索したい場合 \\を付けてエスケープしない ...

msyql-image
MySQLのtinyintのカラムにbool値を入れた場合

他所のシステムに携わることがあり中身を色々見ているとMySQLでtinyint( ...

msyql-image
MySQLのエラーメール送付

MySQLエラーを取得してエラーメール送付。 <? error_repor ...

msyql-image
1回のSQL文で複数のUPDATE

INSERTはバルクインサートを使えばいいが、 UPDATEはあまり聞かないので ...

images
MySQL/Apacheの再起動

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