Home > Backend Development > PHP Tutorial > 跪求一句SQL语句,坐等。解决办法

跪求一句SQL语句,坐等。解决办法

WBOY
Release: 2016-06-13 10:24:53
Original
925 people have browsed it

跪求一句SQL语句,坐等。
4个表,

box是盒子,
note是消息,
box_user是哪些用户在哪些盒子里聊天。
box_note是哪些消息在哪些盒子里(消息可在多盒共享)。

盒子就和微信的一个聊天框一样,消息就是里面的消息。

SQL code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->mysql> describe box;      +---------------------------+------------+------+-----+---------+----------------+| Field                     | Type       | Null | Key | Default | Extra          |+---------------------------+------------+------+-----+---------+----------------+| box_id                    | bigint(20) | NO   | PRI | NULL    | auto_increment || type                      | tinyint(4) | NO   |     | NULL    |                || status_type               | char(1)    | NO   |     | NULL    |                || create_time               | datetime   | NO   |     | NULL    |                || delete_time_from_one_part | datetime   | NO   |     | NULL    |                |+---------------------------+------------+------+-----+---------+----------------+5 rows in set (0.00 sec)mysql> describe box_user;+---------+------------+------+-----+---------+-------+| Field   | Type       | Null | Key | Default | Extra |+---------+------------+------+-----+---------+-------+| user_id | bigint(20) | NO   | PRI | 0       |       || box_id  | bigint(20) | NO   | PRI | 0       |       |+---------+------------+------+-----+---------+-------+2 rows in set (0.01 sec)mysql> describe note;+-------------+-------------+------+-----+---------+----------------+| Field       | Type        | Null | Key | Default | Extra          |+-------------+-------------+------+-----+---------+----------------+| note_id     | bigint(20)  | NO   | PRI | NULL    | auto_increment || user_id     | bigint(20)  | NO   | MUL | NULL    |                || type        | tinyint(4)  | NO   |     | NULL    |                || content     | text        | NO   |     | NULL    |                || mood        | tinyint(4)  | NO   |     | NULL    |                || locate      | varchar(30) | NO   |     | none    |                || privacy     | char(1)     | NO   |     | 1       |                || create_time | datetime    | NO   | MUL | NULL    |                || delay       | int(11)     | NO   |     | 0       |                || festival    | char(30)    | NO   |     | NULL    |                || delete_time | datetime    | NO   |     | NULL    |                |+-------------+-------------+------+-----+---------+----------------+11 rows in set (0.00 sec)mysql> describe box_note;+---------+------------+------+-----+---------+-------+| Field   | Type       | Null | Key | Default | Extra |+---------+------------+------+-----+---------+-------+| note_id | bigint(20) | NO   | PRI | 0       |       || box_id  | bigint(20) | NO   | PRI | 0       |       |+---------+------------+------+-----+---------+-------+2 rows in set (0.00 sec)
Copy after login


想法很简单,试了半天都失败:想根据user_id获取该user的所有盒子以及每个盒子最后一条消息的时间。

我准备了这两个基本SQL语句,
SQL code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//获取所有user_id用户的盒子select box.box_id,type,status_type from box,box_user where box.box_id=box_user.box_id and box_user.user_id=1;//获取所有内部具有消息的user_id用户的盒子以及最后更新时间select box_id,max(create_time) as time from note,box_note where note.note_id=box_note.note_id and note.user_id=1 group by box_id;
Copy after login

它们分别执行结果:
SQL code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->mysql> select box.box_id,type,status_type from box,box_user where box.box_id=box_user.box_id and box_user.user_id=1;+--------+------+-------------+| box_id | type | status_type |+--------+------+-------------+|      1 |    0 | 0           ||      6 |    1 | 0           ||      7 |    3 | 0           ||      8 |    3 | 0           |+--------+------+-------------+4 rows in set (0.00 sec)mysql> select box_id,max(create_time) as time from note,box_note where note.note_id=box_note.note_id and note.user_id=1 group by box_id;+--------+---------------------+| box_id | time                |+--------+---------------------+|      1 | 2012-05-21 00:00:00 ||      6 | 2012-05-30 00:00:00 |+--------+---------------------+2 rows in set (0.00 sec)<div class="clear">
                 
              
              
        
            </div>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template