【发布时间】:2010-04-06 21:06:38
【问题描述】:
我正在为自己构建一个带有标签过滤功能的笔记应用程序,但在尝试使用标签抓取笔记时遇到问题。标签过滤器需要使用 AND 而不是 IN,因为它有助于更好地缩小我要查找的范围。
我的表是这样配置的:
+ notes note_id | note_title | note_uid
+ tags tag_id | tag_title
+ notes_tags nt_id | nt_note_id | nt_tag_id
notes_tags 表跟踪所有笔记的标签。
我不担心返回任何关于标签的信息,所以这里有一个示例 LEFT JOIN,我目前正在使用仅获取带有 只有 1 个标签的笔记。 p>
SELECT * FROM notes_tags LEFT JOIN notes ON note_id = nt_note_id WHERE note_uid IN (1) AND nt_tag_id = 10
这个查询运行完美,它抓取了带有那个单个标签的所有笔记。但是,我在使用这样的查询“精确定位”我的笔记时遇到了问题:
SELECT * FROM notes_tags LEFT JOIN notes ON note_id = nt_note_id WHERE note_uid IN (1) AND nt_tag_id = 10 AND nt_tag_id = 11
我在语法上做错了什么?
【问题讨论】:
-
您正在尝试获取标签 10 和 11 中的笔记,我接受吗?你不能只用一个 AND,看看昨天的类似问题:stackoverflow.com/questions/2581067/…
标签: php mysql left-join where-clause