Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL元表帮助(mysql)_Mysql_Sql - Fatal编程技术网

SQL元表帮助(mysql)

SQL元表帮助(mysql),mysql,sql,Mysql,Sql,我有3个表(“新闻”、“类别”和作为联接表的“元”)。我只是想过滤包含category\u id的新闻,它是作为过滤参数提供的。我尝试了下面的查询(以及类似的查询),但它返回了新闻表中的所有新闻 那么如何通过meta\u id(category\u id)过滤这些新闻呢 非常感谢 // category table category_id | category_name --------------------------- 55 | Sport 56 | P

我有3个表(“新闻”、“类别”和作为联接表的“元”)。我只是想过滤包含
category\u id
的新闻,它是作为过滤参数提供的。我尝试了下面的查询(以及类似的查询),但它返回了新闻表中的所有新闻

那么如何通过
meta\u id(category\u id)
过滤这些新闻呢

非常感谢

// category table category_id | category_name --------------------------- 55 | Sport 56 | Politics // meta table meta_id | meta_type | rel_id | rel_type --------------------------------------- 55 | category | 78345 | news 56 | category | 91278 | news Notes: rel_id (in meta table) = id (in news table) // i don't need it in this case meta_id (in meta table) = category_id (in category table)
您必须在
ON
子句中添加一个条件

SELECT n.* FROM `news` n LEFT JOIN `metas` m ON m.meta_type='category' AND m.meta_id = n.category_id WHERE m.meta_id=55 AND n.status=1 GROUP BY n.id ORDER BY n.id DESC LIMIT 0,10 选择* 来自'news`n 左连接'metas`m ON m.meta_type='category'和m.meta_id=n.category_id 其中m.meta_id=55,n.status=1 按n.id分组 按n.id描述订购 限值0,10
您必须在
ON
子句中添加一个条件

SELECT n.* FROM `news` n LEFT JOIN `metas` m ON m.meta_type='category' AND m.meta_id = n.category_id WHERE m.meta_id=55 AND n.status=1 GROUP BY n.id ORDER BY n.id DESC LIMIT 0,10 选择* 来自'news`n 左连接'metas`m ON m.meta_type='category'和m.meta_id=n.category_id 其中m.meta_id=55,n.status=1 按n.id分组 按n.id描述订购 限值0,10
最重要的是将
metas
链接到
news
。如果我没有看错你的问题,链接字段是
m.rel\u id=n.id
。以下示例查询应筛选类别55:

select  *
from    metas m
join    news n
on      m.rel_id = n.id
where   m.meta_type = 'category'
        and m.meta_id = 55
        and n.status = 1
order by
        n.id desc
limit   0, 10

注意:不确定为什么查询中有
分组依据。当然不需要筛选类别

最重要的是将
metas
链接到
news
。如果我没有看错你的问题,链接字段是
m.rel\u id=n.id
。以下示例查询应筛选类别55:

select  *
from    metas m
join    news n
on      m.rel_id = n.id
where   m.meta_type = 'category'
        and m.meta_id = 55
        and n.status = 1
order by
        n.id desc
limit   0, 10

注意:不确定为什么查询中有
分组依据。当然不需要筛选类别

但是没有
n.category\u id
。我也尝试了
关于m.meta_type='category'和m.meta_id=2的方法,但是没有用。但是没有
n.category_id
。我也试过在m.meta_type='category'和m.meta_id=2上使用
,但是没有用。我也试过了,但是不起作用,没有
n.category_id
,由
rel_id
保留的新类别,我不需要它。我只是想通过
category\u id
(所以
meta\u id
)列出新闻。我也尝试了这个方法,但是不起作用,没有
n.category\u id
,由
rel\u id
保留的新类别,我不需要它。我只是想按
category\u id
(所以
meta\u id
)列出新闻。您的
news
表的结构是什么?您的
news
表的结构是什么?谢谢您的回答<代码>分组依据:
其中
获取列表(搜索)页面上的许多参数,需要使用分组依据,但这里只是“按类别筛选”条件,不需要。谢谢回答
groupby
for:
where
获取列表(搜索)页面上的许多参数,需要使用groupby,但这里只是不需要的“filter\u by\u category”条件。