我正在處理類的分配,並且問題要求在同一個表的同一列中查找匹配項。並列出具有此匹配的所有行。讓我只是發佈問題以更好地解釋它: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