スレッド表示 | フラット表示〕 全トピック 920 件中 2 番目 次≫ ≪前

おすすめユーザー機能

created: 2012-01-23 17:01 | modified: 2012-01-25 16:46 | reply: 2

[4414] おすすめユーザー機能

user: ゴーマン | created: 2012-01-23 17:01
以前も質問させてもらった者です。
今題名にもあるように、「おすすめユーザー」機能を作成してますが、
つまずいしてしまってます。
まず、お気入り「user_bookmark」テーブルにお気に入りユーザーを登録します。ユーザー情報は[user」テーブルです。
登録していないユーザーをランダムに表示させたいのですが、同じユーザーが表示されたり、登録しているユーザーも表示されます。

色々と調べたのですが、参考になるような情報も得れない状況です。
SQLは↓です。
select user.* FROM user_bookmark,user WHERE user_bookmark.user_id = "ユーザーID" AND user_bookmark.t_user_id >= user.id and user.id != "ユーザーID" order by RAND() desc limit 15

もしよければご伝授お願いします!!
reply: 4415 返信 編集 削除

[4415] サブクエリはいかが

user: ゆうじ | created: 2012-01-23 23:52
こんばんわス。
userテーブルに対して次の用件を盛り込む必要があるようですが

1.「ユーザー自身」と「登録済のお気に入りユーザー」を除く。
2.残るレコードから、ランダムに、15件の、ユーザーを選ぶ。

この↓SQLでは満たしてない気がします。

SELECT user.* 
FROM
user_bookmark,
user
WHERE
user_bookmark.user_id = "ユーザーID" AND
user_bookmark.t_user_id >= user.id AND
user.id != "ユーザーID"
ORDER BY
RAND() desc
LIMIT
15

テーブルひとつで完結しないので
サブクエリ(副問合せ)を使ってみてください。

Mysql 5.1以降ではこうなるだろうというのを挙げてみました。
サブクエリを使ったことがなくて間違ってたらゴメンなさい。

SELECT * 
FROM
user
WHERE
id <> 'ユーザーID' AND
id <> (SELECT user_id FROM user_bookmark WHERE user_id = 'ユーザーID')
ORDER BY
RAND()
LIMIT
15
Parent: 4414  reply: 4416 返信 編集 削除

[4416] 返信ありがとうございます

user: ゴーマン | created: 2012-01-25 16:46
すいません、今使ってるMysqlは5.0.77なので、エラーになってしまいます・・・。
Parent: 4415  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 2 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑