ホームページ >バックエンド開発 >PHPチュートリアル >最新の購入製品情報をmysql配列に出力する方法

最新の購入製品情報をmysql配列に出力する方法

WBOY
WBOYオリジナル
2016-06-13 13:27:27881ブラウズ

mysql はどのように最新の購入製品情報を配列に出力します
書籍テーブルがあります (タイトルは製品名で、1 つの ID で複数の書籍を購入できます。たとえば、ID 1 のユーザーは 2 つの製品 a と b を購入します)

SQL コード
<!--

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



次に、最近購入した 5 つの製品の名前を印刷する方法を教えてください。表示順序は次のとおりです。 >c,b,e ,a,d








-----解決策------ ----- --------

SQL コード SELECT LEFT(GROUP_CONCAT(stitle),10) FROM (SELECT TRIM(',' FROM stitle) AS stitle FROM `book` ORDER BY time DESC LIMIT 5)a
------解決策---------
<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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。