我有两个表,结构如下:
Posts Table
id
content
Meta Table
id
post_id
content
nameposts表是主要的父表,可以将来自元表的数据与其连接
Post Table
id content
1 My first row
Meta Table
id post_id content name
4 1 2011-5-5 date
5 1 My Heading heading
6 2 2012-3-3 date
7 2 My Title heading如何编写一个查询来搜索posts表中包含元数据内容2011-5-5、名称为date、标题名称为Heading的条目
我可以单独买到。
Select *
from posts, meta
WHERE post_id = posts.id
AND (name='date' AND content='2011-5-5')但是,只要我添加第二个条件,它就会返回零结果,因为我们要求name字段是两个不同的字段
Select *
from posts, meta
WHERE post_id = posts.id
AND (name='date' AND content='2011-5-5')
AND (name='heading' AND content='My Heading')如有任何帮助,将不胜感激,谢谢!
发布于 2011-05-17 06:03:08
您需要加入到表中两次:
SELECT *
FROM posts, meta m1, meta m2
WHERE posts.id=m1.post_id
AND posts.id=m2.post_id
AND m1.name="date" AND m1.content="2011-5-5"
AND m2.name="heading" AND m2.content="My Heading"发布于 2011-05-17 06:00:27
你有没有试过这个:
Select *
from posts, meta, meta meta_2
WHERE (meta.post_id = posts.id
and meta_2.post_id = posts.id)
AND ((meta.name='date' AND meta.content='2011-5-5')
and (meta_2.name='heading' AND meta_2.content='My Heading'))由于您希望将两个不同的meta记录与单个post记录相关联,因此您必须从meta中选择两次(一次用于“日期”元值,一次用于“标题”元值)。
发布于 2011-05-17 06:02:12
您需要连接到元表两次(每次搜索一次)-如下所示:
Select *
from posts p
join meta m_date on m_date.post_id = p.id AND m_date.name='date'
join meta m_heading on m_heading.post_id = p.id AND m_heading.name='heading'
where
m_date.content = '2011-5-5' and
m_heading.content = 'My Heading'https://stackoverflow.com/questions/6023918
复制相似问题