我正在处理类的分配,并且问题要求在同一个表的同一列中查找匹配项。并列出具有此匹配的所有行。让我只是发布问题以更好地解释它:SQL查找同一列中的匹配
列出相同项目类别中每对零件的零件号,零件描述和零件类。 (例如,一个这样的对将是部分AT94和部分FD21,因为这两个部分的项目类别都是HW。)
我不确定使用哪个函数来执行此操作。老师是否希望我们按课程分组结果?
我正在处理类的分配,并且问题要求在同一个表的同一列中查找匹配项。并列出具有此匹配的所有行。让我只是发布问题以更好地解释它:SQL查找同一列中的匹配
列出相同项目类别中每对零件的零件号,零件描述和零件类。 (例如,一个这样的对将是部分AT94和部分FD21,因为这两个部分的项目类别都是HW。)
我不确定使用哪个函数来执行此操作。老师是否希望我们按课程分组结果?
我打算给你一部分答案:
你需要配对。所以你基本上将GROUPING的项目数为2.
祝你好运!
附录:
请记住,使用聚合函数的SELECT毕竟项目不在GROUP BY。根据您使用的数据库引擎的不同,可能会有一些串联函数。
您正在寻找Group By。由于这是家庭作业,我不会提供一个具体的例子,但语法是一般
SELECT [COLUMNS]
FROM [TABLE]
WHERE [PREDICATE] --Okay, all that's normal in SQL
GROUP BY [COLUMN] --This column should be a named column in your SELECT statement.
更新:由于MPelletier说,你也想“具有”
快乐狩猎。
通常,班上的老师,助理或最聪明的孩子能够更好地解释老师的意图。但是,您不需要GROUP来解决这个问题。
你应该自己加入表格。
像这样的东西可以把你在正确的轨道上:
select <list of fields>
from parts p1
inner join parts p2 on p1.item_class = p2.item_class
where p1.part_number < p2.part_number
有一对夫妇从这个声明的结果需要注意的地方。
例如:
您将获得在窗体上重复(A,B)和(B,A)
你会得到同样的每个项目与本身所加入(A,A)。
编辑:
固定的告诫(通过添加where子句)。
这是一个尴尬的方法,因为连接会创建4个项目:item1-item1,item1-item2,item2-item1和item2-item2。然后你必须过滤所有的垃圾。 – MPelletier
我得给学生留点东西,对吧? –
我认为这个任务的截止日期已经过去了,所以我添加了“尴尬”的过滤器来摆脱“所有那些废话”。我怀疑使用“GROUP BY”和“HAVING”的解决方案比这更简单。 –
SELECT part_nr,part_desc,item_class 从零件 ORDER BY item_class
SELECT F.ITEM_NUM, S.ITEM_NUM, F.DESCRIPTION, S.DESCRIPTION, F.CATEGORY, S.CATEGORY
FROM ITEM F, ITEM S
WHERE F.CATEGORY = S.CATEGORY
AND F.ITEM_NUM < S.ITEM_NUM
ORDER BY F.ITEM_NUM, S.ITEM_NUM;`
没必要。成对项目只是项目1和项目2在列中具有相同值的项目。 – drdwilcox
当然,总有不止一种方法可以得到你想要的东西。 OP可以加入自己的桌子并从中得到一些东西。不理想。 – MPelletier
表示同意,但如果他想要来自两个项目的值在单个结果记录中,则必须进行自连接。 – drdwilcox