勉強したことのメモ

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

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

   

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

・ユニークなコードがあり、そのコードに対して複数のスコアがつけられる
・全てのコードは他の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

  関連記事

PHPからMySQLにシリアライズしたデータを格納

アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...

MySQLで同一サーバーの異なるDB内のテーブルをJOINする

同一のMySQLサーバーでdb1データベースのtable1テーブルと、db2デー ...

MySQLでデータがあれば更新、無ければ挿入

DBにデータがあれば更新、無ければ挿入(新規作成)を 行いたい際に使えるものがあ ...

MySQLでtime型データの減算と条件検索

MySQLでtime型データからint型データの減算を行い、減算後のデータを検索 ...

MySQLのUNION

$sql_1 = "SELECT name_a,name_b FROM tabl ...

MySQLで複数のテーブルを異なるデータベースと異なるカラムでJOIN

ちょっとややこしいんだけど、以下のような条件で3つのテーブルを結合したかった。 ...

MySQLでユニークキーをはる

MySQLでseqとcodeみたいなものをあわせて ユニークキーをはりたかった。 ...

WordPressでデータベース接続確立エラー

WordPressで「データベース接続確立エラー」というエラー表示がされた。大抵 ...

MySQLでtext型カラムに入っている数値をint型としてソートする

MySQLでtext型として指定されているカラムがあり、その中には文字列であった ...

phpMyAdminやAdminer上だけ文字化け

レンタルサーバーのプログラムでWebページ上では文字化けしていないのに、phpM ...