ホームページ >バックエンド開発 >PHPチュートリアル >最新の購入製品情報をmysql配列に出力する方法
mysql はどのように最新の購入製品情報を配列に出力します
書籍テーブルがあります (タイトルは製品名で、1 つの ID で複数の書籍を購入できます。たとえば、ID 1 のユーザーは 2 つの製品 a と b を購入します)
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 字段 id stitle time 1 a,b, 2011-01-01 2 c,d, 2011-01-02 3 a, 2011-01-03 4 b,e, 2011-01-04 5 c, 2011-01-05
<br>逆順に 5 つの項目を検索するだけだと思います<font color="#e78608"></font> 次に、それを配列に含めます。繰り返される項目は 5 つ未満なので、このプロセスを繰り返します。 <br><br>------解決策---------<br><br>実際、彼は製品カタログを持っているはずですが、なぜですか<font color="#e78608">SQL コード</font> はどうでしょうか? `t1` が存在する場合はテーブルを削除します。 create table t1(id int 主キー AUTO_INCREMENT,stitle varchar(10),time date); t1 値に挿入 (null,'a,b','2011-01-01'); t1 値に挿入 (null,'c,d','2011-01-02'); t1 値に挿入 (null,'a','2011-01-03'); t1 値に挿入 (null,'b,e','2011-01-04'); t1 値に挿入 (null,'c','2011-01-05'); `t2` が存在する場合はテーブルを削除します。 テーブル t2 を作成します(id int 主キー AUTO_INCREMENT,name varchar(10)); t2 値 (null,'a') に挿入します。 t2 値 (null,'b') に挿入します。 t2 値 (null,'c') に挿入します。 t2 値 (null,'d') に挿入します。 t2 値に挿入 (null,'e'); t2 値 (null,'f') に挿入します。 select t1.id, t2.name as stitle, t1.time from t1, t2 where find_in_set(t2.name, t1.stitle) order by t1.time desc limit 5 <br>
<br><font color="#e78608">SQL コード</font> `t` が存在する場合はテーブルを削除します。 create table t(id int 主キー AUTO_INCREMENT,stitle varchar(10),time date); t 値に挿入 ('','a,b,',STR_TO_DATE('2011-01-01','%Y-%m-%d' )); t 値に挿入 ('','c,d,',STR_TO_DATE('2011-01-02','%Y-%m-%d' )); t 値に挿入 ('','a, ',STR_TO_DATE('2011-01-03','%Y-%m-%d' )); t 値に挿入 ('','b,e,',STR_TO_DATE('2011-01-04','%Y-%m-%d' )); t 値に挿入 ('','c, ',STR_TO_DATE('2011-01-05','%Y-%m-%d' )); *から選択してください (id,substring(stitle,1,1) を newsitle,time,1 as order1 from t として選択します すべてを結合する id、substring(stitle、3、1) を newsitle、time、2 として order1 から t ) を選択します。 ここで、a.newsitle != ' ' 時間順に並べ替えます。 desc,order1 asc 制限 0,5; +-----+----------+---------------+----------+ | ニュースサイト | 時間 | +-----+----------+---------------+----------+ | 5 | 2011-01-05 | | 4 | 2011-01-04 | | 4 | 2011-01-04 | | 3 | 2011-01-03 | | 2 | 2011-01-02 | +-----+----------+----------------+----------+ <br>