【发布时间】:2014-06-17 19:22:48
【问题描述】:
我想编写一个查询,它返回一个包含我选择的项目的框列表,并按我选择的内容排序显示它们。如果我选择Item1,Item2和Item3,我希望看到的结果是:
BoxA, 3 , Item1
BoxA, 3 , Item2
BoxA, 3 , Item3
BoxB, 2 , Item2
BoxB, 2 , Item3
这意味着 BoxA 有 3 个我选择的项目,项目是 Item1,Item2,Item3。 我找不到进行单个查询的方法。我所能做的就是(请注意,为了简单起见,我使用 ids 而不是项目名称。添加项目名称很容易。):
SELECT b.name,count(*) cnt, ib.i_id
FROM boxes b, items_boxes ib
WHERE b.id=ib.b_id and ib.i_id in (1,2,3,4)
GROUP BY b.id
ORDER BY cnt DESC;
此查询返回 Box 名称和其中项目的计数,而项目(或 i_id)只是第一个。 我如何获得我需要的东西?我应该使用两个选择吗?
sqlFiddle:example
【问题讨论】:
-
请添加表格和一些数据。可能在sqlfiddle.com
-
您能否发布您的查询返回的所需内容..