我目前正在尝试将我网站的功能从利用php和文本文件转换为利用MySQL数据库。我填写了数据库设置和表格。
数据库包含以下内容:
Table: Items
Columns: Item_ID, Item_Name
Table: Tags
Columns: Tag_ID, Tag_Name
Table: Items_Tags
Columns: Item_ID, Tag_ID
如何创建以下查询?
1)返回与名为“x”的项目具有4个或更多相同标签的所有项目的名称。
例如,假设项目x具有标签a,b,c,d,e,f并且项目y具有标签a,b,c,d然后我需要返回y和其他具有至少4个的标签与x
相同的标签
2)返回2个项目共有的标签名称
扩展上面的一个,使用x和y,返回a,b,c,d,因为它们有共同点
3)返回具有以下标记'a','b','c'
的项目的名称将返回x和y,因为它们有a,b,c作为标记
到目前为止我的尝试
删除,因为它们甚至没有关闭
答案 0 :(得分:0)
使用post.fetchLikes()
GROUP BY
答案 1 :(得分:0)
#1
select i.item_name, t.tag_name,
count(t.tag_tame) as tag_count
from items i, tags t, items_tags it
where i.item_id = it.item_id
and t.tag_id = it.tag_id
and Upper(i.item_name) = Upper('x')
group by i.item_name, t.tag_name
having count (it.tag_id) >= 4
#2
select i.item_name, t.tag_name
from items i, tags t, items_tags it
where i.item_id = it.item_id
and t.tag_id = it.tag_id
and Upper(i.item_name) like Upper(:item_name) /* :item_name acts as parameter and let you send any item_name you need */
group by t.tag_name, i.item_name
having count (it.tag_id) >= 1
#3
select i.item_name, t.tag_name
from items i, tags t, items_tags it
where i.item_id = it.item_id
and t.tag_id = it.tag_id
and ((Upper(t.tag_name) = Upper('a')) or
(Upper(t.tag_name) = Upper('b')) or
(Upper(t.tag_name) = Upper('c')))
group by t.tag_name, i.item_name