人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLについて質問です。

MySQLとPHPで店舗紹介サイトを作っています。

連番,店舗名,掲載種別,閲覧数
1,田中製薬,1,9
2,村井商店,0,15,
3,森生花店,1,34
4,居酒屋蘭,0,7
5,森永製菓,0,60
6,丸山米店,1,14

というような、店舗テーブルがあります。

掲載種別は、お金を頂いて掲載している店舗が1、サービスで掲載している店舗が0です。

店舗一覧ページ(20件/1p)では、「有料掲載店舗」・「無料掲載店舗」の順に表示したいと思ってます。
有料店舗はランダム表示、無料は閲覧数の高いページ順にデータを並び替えるSQL文は可能でしょうか?
可能であれば、そのSQL文を教えていただきたいと思います。

結果例として
6,丸山米店,1,14
1,田中製薬,1,9
3,森生花店,1,34
5,森永製菓,0,60
2,村井商店,0,15,
4,居酒屋蘭,0,7

このような感じです。1Pで処理するのであれば、php側で処理すればいいのですが、1p20件しか表示しないため、SQL側のlimitで20ページずつ取得していく方法しかないかなと思います。

宜しくお願いいたします。

●質問者: ruijio
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MySQL PHP SQL お金 サイト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● b-wind
●27ポイント ベストアンサー
SELECT * FROM
 店舗
 ORDER BY 掲載種別 DESC,
 CASE 掲載種別 WHEN 1 THEN rand() ELSE 0 END,
 閲覧数 DESC

ってとこ?

◎質問者からの返答

回答ありがとうございます。

掲載種別が、1の時はrand()でランダム順で、0 の時は、閲覧数の降順で、、END・・・。

解るような解らないような。

でも、お陰さまで結果解決できました。有難うございました。


2 ● kunyami
●27ポイント

select *

from TABLE_NAME

order by 掲載種別 desc, case 掲載種別 when 1 then 0 else 閲覧数 end desc

limit 20 offset ?;

とかかな?

◎質問者からの返答

回答有難うございます。

やってみましたが、結果何も返ってきませんでした(?_?)

でもb-windさんの回答で解決してます。有難うございました、また機会がありましたら宜しくお願い致します。


3 ● chuken_kenkou
●26ポイント

こんな感じでどうでしょう。

select *
 from t1
 order by 掲載種別 desc,case 掲載種別 when 1 then rand() else 閲覧数 end desc 
 limit 0,10
◎質問者からの返答

回答有難うございます。

b-windさんと殆ど同じでしょうか。試してみましたが、うまく行きました。

あ、そうか、返信しながら気付いたのですが、b-windさんのは、並び替えのルールが3つあって、chuken_kenkouさんのは、並び替えのルールが2つところが違うのですね。

SQL文を理解できたわけじゃないですが、お陰さまで解決に至りました。有難うございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ