Php 连接来自不同表的两个查询
如何将这两个查询合并为一个查询 第一个查询获取特定类别中的所有posts\u id;post_类别表中的postId等于post表中的idPhp 连接来自不同表的两个查询,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
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来返回所有帖子