2011-11-02 117 views
0

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

列出相同項目類別中每對零件的零件號,零件描述和零件類。 (例如,一個這樣的對將是部分AT94和部分FD21,因爲這兩個部分的項目類別都是HW。)

我不確定使用哪個函數來執行此操作。老師是否希望我們按課程分組結果?

回答

0

我打算給你一部分答案:

你需要配對。所以你基本上將GROUPING的項目數爲2.

祝你好運!


附錄:

請記住,使用聚合函數的SELECT畢竟項目不在GROUP BY。根據您使用的數據庫引擎的不同,可能會有一些串聯函數。

+0

沒必要。成對項目只是項目1和項目2在列中具有相同值的項目。 – drdwilcox

+0

當然,總有不止一種方法可以得到你想要的東西。 OP可以加入自己的桌子並從中得到一些東西。不理想。 – MPelletier

+0

表示同意,但如果他想要來自兩個項目的值在單個結果記錄中,則必須進行自連接。 – drdwilcox

0

您正在尋找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說,你也想「具有」

快樂狩獵。

0

通常,班上的老師,助理或最聰明的孩子能夠更好地解釋老師的意圖。但是,您不需要GROUP來解決這個問題。

-2

你應該自己加入表格。

像這樣的東西可以把你在正確的軌道上:

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子句)。

+0

這是一個尷尬的方法,因爲連接會創建4個項目:item1-item1,item1-item2,item2-item1和item2-item2。然後你必須過濾所有的垃圾。 – MPelletier

+0

我得給學生留點東西,對吧? –

+0

我認爲這個任務的截止日期已經過去了,所以我添加了「尷尬」的過濾器來擺脫「所有那些廢話」。我懷疑使用「GROUP BY」和「HAVING」的解決方案比這更簡單。 –

0

SELECT part_nr,part_desc,item_class 從零件 ORDER BY item_class

-1
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;`