让我们想象一下,我们有一个小型MySQL数据库:
妇女:
women_shoes:
鞋:
woman_handbags:
手袋:
有两种关系,多对多.我想从这样的数据库中得到的是:选择所有有鞋子的女人:耐克、美洲狮、芒果和手袋:范思哲。我对每一双鞋和每一只手提包都很感兴趣。我知道东西的名字,我想找出名字。
发布于 2014-05-07 21:22:28
也许是这样的?如果我正确理解你的问题。
SELECT
r.*
FROM recipe r
JOIN recipe_ingredients ri ON ri.id_recipe = r.id_recipe
JOIN ingredients i ON i.id_ingredient = ri.id_ingredient
JOIN recipes_tags rt ON rt.id_recipe = r.id_recipe
JOIN tags t ON t.id_tag = rt.id_tag
WHERE i.name = 'ziemniaki'
OR i.name = 'cebula'
AND t.tag = "tani"
OR t.tag = "łatwy"
GROUP BY r.id_recipe
HAVING COUNT(r.id_recipe) > 3 -- all 4 of the criteria have been met
;请参阅工作小提琴以获得澄清。
基本上,这是在满足四个条件之一时返回一行的。除此之外,它还将只返回至少有一个成分和至少一个标签的食谱。因此,当返回4(或更多)行时,就满足了使用请求的params的菜谱的条件。
发布于 2014-05-07 21:58:26
由于第二个条件只有一个手提包,所以您实际上不需要从子查询中进行选择,但我认为它可能会更改为多个手提包。
SELECT
w.*
FROM women w
JOIN
(
SELECT
id_woman
FROM woman_shoes ws
JOIN shoes s ON ws.id_shoe = s.id_shoe
WHERE s.name IN ('puma','nike','mango')
GROUP BY id_woman
HAVING COUNT(*) = 3
) has_shoes hs ON hs.id_woman = w.id_woman
JOIN
(
SELECT
id_woman
FROM woman_handbags wh
JOIN handbags h ON wh.id_handbag = h.id_handbag
WHERE h.name IN ('versace')
GROUP BY id_woman
HAVING COUNT(*) = 1
) has_handbag hb ON hb.id_woman = w.id_woman发布于 2022-11-19 23:56:15
试着做那样的事-但我有问题.
我想要做书目记录-我有一个表,我存储选定的文章(bibl_1983)的数据-我有表,我存储的主题(关键字)和名称(在文章中提到的人)-我试图把一个真正的书目转化为在线搜索的东西-所以我想保持原始数据系统-兼容原始打印的一个.
如果我只想显示一件事--例如关键字或人物--我很容易做到。
表格如下:
bibl_1983:pub_id,author,title,periodical,date,volume,issue,page,illustration,annotation
contable_name:contname_id,name_id2,pub_id4
命名空间:name_id,name
contable_subject:cont_id,sub_id2,pub_id3
主题:sub_id,subject
SELECT bibl_1983.pub_id, group_concat(subject.subject
ORDER BY subject.subject ASC) AS subject
FROM bibl_1983, subject, contable_subject
WHERE ((bibl_1983.pub_id=contable_subject.pub_id3) AND
(subject.sub_id=contable_subject.sub_id2))
GROUP BY bibl_1983.pub_id它工作得很好,而且很棒,这也很好:
SELECT bibl_1983.pub_id, group_concat(namespace.name
ORDER BY namespace.name ASC) AS name
FROM bibl_1983, namespace, contable_name
WHERE ((bibl_1983.pub_id=contable_name.pub_id4) AND
(namespace.name_id=contable_name.name_id2))
GROUP BY bibl_1983.pub_id 但是我不知道,我怎么能在同一时间,用同样的方式,在同一页上展示这两件事。
它是两种不同的多到多的联系。
我想展示的是:文章数据+关键字+一个查询(或视图)中的人员。
https://stackoverflow.com/questions/23528585
复制相似问题