現在、プログラムの勉強をしている者です。
勉強目的でサイトを作成して簡単なアクセス解析を作成中です。
登録しているブログの記事やURLをデータベースに登録して
登録しているブログからの当サイトへのIN数や
当サイトから登録しているブログへの送ったアウト数によって
登録しているブログの記事を紹介していくというサイトを勉強目的で作成しています。
(データベース登録・削除・更新等の操作があるため)
アクセス解析の中の
IN数・アウト数を集計する事に成功しましたので
登録しているブログを紹介している回数をプログラムで操作していきたいと思っているのですが
「複数の条件指定」の所で思い通りの操作が出来ずに壁にぶつかっています。
テーブル名:blog カラム名: id, title, url, name, date 説明: id:登録ブログの記事ID title:登録ブログの記事タイトル url:登録ブログの記事URL name:登録ブログ名 date:登録ブログの記事の更新日時
テーブル名:site カラム名: id, name, rssurl, incount, outcount, kangen, rsscount 説明: id:登録ブログID name:登録ブログ名 rssurl:登録ブログのURL incount:インカウント数(送って貰えた値) outcount:アウトカウント数(送った値) kangen:登録ブログへの還元率・返還率の値が入ります。 rsscount:登録ブログを紹介した回数が入ります。
複数の条件を指定して「紹介する登録ブログ」を決定する為の
抽出を行います。
ドットインストールさんやネットで色々調べて自分なりに作成してみました。
条件:
テーブル名:siteのカラム名:henkan(還元率)の値が「2」以下でなおかつ テーブル名:siteのカラム名:rsscount(紹介回数)の値が「10」未満でなおかつ テーブル名:siteのカラム名:incount(登録ブログから送って貰えた値)の値の上位5位のブログでなおかつ テーブル名:blogのカラム名:date(記事の更新日時)が「24時間」以内の登録しているブログの記事を ランダムに混ぜて抽出します。
PHP
1 2$stmt = $db->query("select blog.id,blog.title,blog.url, 3blog.name 4 from blog,site where 5blog.name=site.name 6AND site.henkan <= 2 7AND site.rsscount < 10 8AND blog.date > CURRENT_TIMESTAMP + INTERVAL - 24 HOUR 9 order by incount desc, rand() limit 5"); 10
実行結果:
テーブル名:siteのカラム名:henkan(還元率)の値が「2」以下でなおかつ ↓ 成功しました。 テーブル名:siteのカラム名:rsscount(紹介回数)の値が「10」未満でなおかつ ↓ 成功しました。 テーブル名:siteのカラム名:incount(登録ブログから送って貰えた値)の値の上位5位のブログでなおかつ ↓ 失敗しました。 incountの上位5位ではなく 上位1位のみが選択され続けてしまいます。 テーブル名:blogのカラム名:date(記事の更新日時)が「24時間」以内の登録しているブログの記事を ランダムに混ぜて抽出します。 ↓ 24時間以内の記事は成功しましたがランダムにシャッフルするのは失敗しました。 登録ブログの記事がシャッフルされず 必ず1件の記事が抽出されつづけています。
incountの上位5件の登録ブログの記事をランダムにシャッフルするという条件を無くしてみた所
正常にシャッフルして抽出する事が出来ました。
条件:
テーブル名:siteのカラム名:henkan(還元率)の値が「2」以下でなおかつ テーブル名:siteのカラム名:rsscount(紹介回数)の値が「10」未満でなおかつ テーブル名:blogのカラム名:date(記事の更新日時)が「24時間」以内の登録しているブログの記事を ランダムに混ぜて1件のみを抽出します。
PHP
1 2$stmt = $db->query("select blog.id,blog.title,blog.url, 3blog.name 4 from blog,site where 5blog.name=site.name 6AND site.henkan <= 2 7AND site.rsscount < 10 8AND blog.date > CURRENT_TIMESTAMP + INTERVAL - 24 HOUR 9 order by rand() limit 1"); 10
上の条件を削った、抽出条件では正常に抽出する事が出来ました。
テーブル名:siteのカラム名:henkan(還元率)の値が「2」以下でなおかつ
テーブル名:siteのカラム名:rsscount(紹介回数)の値が「10」未満でなおかつ
テーブル名:siteのカラム名:incount(登録ブログから送って貰えた値)の値の上位5位のブログでなおかつ
テーブル名:blogのカラム名:date(記事の更新日時)が「24時間」以内の登録しているブログの記事を
ランダムにシャッフルして抽出します。
この抽出する条件の
テーブル名:siteのカラム名:incount(登録ブログから送って貰えた値)の値の上位5位のブログでなおかつ
テーブル名:blogのカラム名:date(記事の更新日時)が「24時間」以内の登録しているブログの記事を
ランダムにシャッフルして抽出します。
この部分を解決する方法を
ネットで調べたり、ドットインストールさんで調べても
上手く抽出する事が出来ませんでした。
解決方法をご存知の方や
何かお気付きの点がある方がいらっしゃいましたら
お力をお貸し頂けると嬉しいです。
どうかよろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/07 11:11
2017/12/07 11:32
2017/12/07 12:00
2017/12/07 12:16
2017/12/07 12:57
2017/12/07 13:07
2017/12/07 13:31
退会済みユーザー
2017/12/07 22:15
2017/12/08 06:20
2017/12/09 02:08
2017/12/09 03:20
2017/12/09 05:08
2017/12/11 01:48
2017/12/13 07:08 編集
2017/12/13 07:13
2017/12/13 07:24 編集