MYSQL:查询两个表并将第二个表中的结果连接到一个数组

时间:2016-05-09 07:11:42

标签: php mysql

我试图找出如何查询我的MYSQL数据库 - 遗憾的是我根本不擅长MYSQL ...

我有两张桌子:

帖子:

---------------------
| id | name | type  |
---------------------
| 1  | mike | type1 |
| 2  | john | type2 |
| 3  | bill | type1 |
---------------------

postmeta:

-------------------------------
| id | post_id | key  | value |
-------------------------------
| 1  |    1    | key1 | val1  |
| 2  |    1    | key2 | val2  |
| 3  |    3    | key3 | val3  |
-------------------------------

我想要的是一些逻辑:

When posts.type == type 1 
select m.id, m.key, m.value from postmeta m
where post_id === posts.id

最好的是,如果我有$ result => $ row像这样:

array (
  id => post.id,
  name => post.name,
  options => array ( 
    key => value
     ...
  )
)

这是我现在的查询。它已经接近了,但还没有做到这一点:

$sql = "SELECT p.id, p.post_title, p.post_content, p.post_type, m.meta_key, m.post_id, m.meta_id, m.meta_value 
    FROM posts p 
    JOIN postmeta m ON m.post_id = p.id
    WHERE type='type1'
    GROUP BY p.id";

我错过了什么?

感谢您的帮助!

的Seb

2 个答案:

答案 0 :(得分:2)

您可以使用内部联接和条件

进行选择
 select m.id, m.key, m.value 
 from postmeta m
 inner join posts as p on( p.id = m.id and p.type = 1)

答案 1 :(得分:-1)

您可以在SELECT查询中使用GROUP_CONTACT()函数,但请注意长度限制,并截断超出此限制的任何内容。