Php 连接来自不同表的两个查询

Php 连接来自不同表的两个查询,php,mysql,sql,join,Php,Mysql,Sql,Join,如何将这两个查询合并为一个查询 第一个查询获取特定类别中的所有posts\u id;post_类别表中的postId等于post表中的id select distinct postId from post_category where categoryId='125' or categoryId='3' SELECT * FROM post <<query one join>> AND approve=1" 然后我想加入它们,这样它就会从post表中的po

如何将这两个查询合并为一个查询

第一个查询获取特定类别中的所有posts\u id;post_类别表中的postId等于post表中的id

select distinct postId 
  from post_category 
  where categoryId='125' or categoryId='3'
SELECT * FROM post <<query one join>> AND approve=1"
然后我想加入它们,这样它就会从post表中的post_类别中选择所有POSTD

select distinct postId 
  from post_category 
  where categoryId='125' or categoryId='3'
SELECT * FROM post <<query one join>> AND approve=1"
职后教育类别

+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| cid        | bigint(11)  | NO   | PRI | NULL    | auto_increment |
| postId     | int(11)     | NO   |     | NULL    |                |
| categoryId | smallint(6) | NO   |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

我认为变量{$join}引用的字符串这是完全错误的,在SQL中有一个特殊的关键字叫join,我将努力编写SQL语句来完成我猜你想要的事情

$sql = "Select a.postId, a.categoryId, b.* from post_category a, post b where a.postId = b.id and (a.categoryId='125' or a.categoryId='3')
@编辑 如果我理解你的评论,你的代码会导致这种情况

 SELECT * FROM post select distinct postId 
  from post_category 
  where categoryId='125' or categoryId='3' AND approve=1"

这是完全错误的SQL语句

作为表架构,请尝试以下连接:

SELECT 
    p.* 
FROM 
    post p
LEFT OUTER JOIN post_category c ON (c.postId = p.id)
WHERE 
    c.categoryId IN (125,3) AND p.approve=1
GROUP BY p.id

如果需要,还可以使用
按p.id分组
来区分帖子。

类似的方法应该可以做到:

SELECT DISTINCT postId post.* FROM post_category 
LEFT JOIN post ON post_category.postId = post.id
WHERE (categoryId='125' OR categoryId='3') AND post.approve = 1

{$join}
的值是多少?除非我们不知道您的数据库结构,否则很难猜测,请将SQL与PHP分开(即仅显示SQL和关系结构)。PHP如何生成此SQL与SQL如何执行联接无关(如果生成的SQL不正确,那么这只是代码中的一个bug,与SQL或联接无关)。所以,最后:显示实际执行的SQL[打算执行的],看看@hallaji,我认为应该留下Join来返回所有帖子