MySQL查询从5个表中获取数据?

时间:2012-08-11 19:39:22

标签: php mysql

对此MySQL的查询是什么?这就是我想要实现的目标。

  1. 我想显示所有状态更新条目,发布日期, 海报用户名,性别,城市和标签
  2. 我想显示一位成员的所有状态更新条目,其中包含user_id ='1',状态更新发布的日期,海报用户名,性别,城市以及该成员在其个人资料中的标签
  3. 如何在一行中以“,”分隔显示用户在其个人资料中显示的所有标记?我之前尝试过group_concat,但我无法使其工作。请帮忙。
  4. 这是我的表格

    STATUS_UPDATE Table
    +------------------------------------------------------+
    | status_id | user_id |      body       |  postdate    |
    +-----------+---------+-----------------+--------------+
    | 1         |   1     | hello world     | Aug 12, 2012 |
    +-----------+---------+-----------------+--------------+
    | 2         |   1     | i miss you      | Aug 13, 2012 |
    +-----------+---------+-----------------+--------------+
    | 3         |   2     | lorem ipsum     | Aug 14, 2012 |
    +-----------+---------+-----------------+--------------+
    | 4         |   2     | why me? why?    | Aug 14, 2012 |
    +-----------+---------+-----------------+--------------+
    
    MEMBERS Table    //Primary data of members
    +---------------------------------------------------+
    | user_id | username |  password  |   email         |
    +---------+----------+------------+-----------------+
    |    1    | john_doe |  qwerty    | john@doe.com    |
    +---------+----------+------------+-----------------+
    |    2    | maryjane |  pass123   | mary@jane.com   |
    +---------+----------+------------+-----------------+
    
    MEMBERS_DATA Table   //Profile Fields
    +----------------------------------------------+
    | user_id | gender |  description  |   city    |
    +---------+--------+---------------+-----------+
    |    1    | male   |  i am simple  | chicago   |
    +---------+--------+---------------+-----------+
    |    2    | female |  i am flirty  | newyork   |
    +---------+--------+---------------+-----------+
    
    MEMBERS_TAGS Table   //tags that members added to their profiles
    +-------------------+
    | user_id | item_id |
    +---------+---------+
    |  1      |  555    |
    +---------+---------+
    |  1      |  666    |
    +---------+---------+
    |  1      |  7777   |
    +---------+---------+
    |  2      |  8888   |
    +---------+---------+
    
    
    TAGS Table    //the info of the tags
    +------------------------------+
    | item_id | cat_id |  name     |
    +---------+--------+-----------+
    | 555     |   5    |  sexy     |
    +---------+--------+-----------+
    | 666     |   5    |  beauty   |
    +---------+--------+-----------+
    | 7777    |   6    |  music    |
    +---------+--------+-----------+
    | 8888    |   6    |  movies   |
    +---------+--------+-----------+
    
    CATEGORY Table   //the category of the tags
    +-------------------------+
    | cat_id  | category_name |
    +---------+---------------+
    | 5       |  appearance   |
    +---------+---------------+
    | 6       |  hobbies      |
    +---------+---------------+
    

    BTW我用PHP编码,我想提前感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

SELECT 
      STATUS_UPDATE.* ,
      MEMBERS.username ,
      MEMBERS_DATA.gender ,
      MEMBERS_DATA.city
      TAGS.*
FROM  UPDATE
LEFT JOIN MEMBERS ON MEMBERS.user_id = STATUS_UPDATE.user_id
LEFT JOIN MEMBERS_DATA ON MEMBERS_DATA.user_id = STATUS_UPDATE.user_id
LEFT JOIN MEMBERS_TAGS ON MEMBERS_TAGS.user_id = STATUS_UPDATE.user_id
LEFT JOIN TAGS ON TAGS.item_id = MEMBERS_TAGS.item_id