2012-03-29 82 views
0

我在mysql中遇到了問題。我需要從包含以下數據的表中獲取某些記錄集。在mysql中從表中獲取唯一記錄

enter image description here

讓我介紹一下桌子的傢伙。每個主要項目都有一個類似的項目,並且相似的項目有一個大小。

但我們必須顯示上表中具有最小尺寸的唯一項目。

例如..主項目是A,它是X中的相應項目,X也是主項目,它與A中的項目類似,但X也有類似項目P,因此A,X,P都是相似的,並且在這些具有最小尺寸的項目是P,其大小爲4,所以我們從查詢中獲取P。

此外,記錄爲1-M,所有主要項目爲類似項目,所有類似項目在數據庫的主要字段中退出。而這個表包含近3個拉奇記錄提取和循環一次記錄將無法正常工作。

任何幫助將不勝感激。

感謝 賈韋德Shamshedi

+0

普也有類似的項目 - Q,那麼大小應爲8。對不對? – Devart 2012-03-29 07:05:49

+0

你可以顯示錶格模式嗎? – sakhunzai 2012-03-29 07:05:54

+0

@Devart - 是P有類似的項目Q,所以Q應該被提取查詢,因爲它只有一個在db – 2012-03-29 07:11:45

回答

1

鑑於模式:

CREATE TABLE similar_test (id int(11) NOT NULL DEFAULT '0', 
Stock varchar(20) NOT NULL, SimilarStock varchar(20) NOT NULL, 
ItemSize decimal(18,2) DEFAULT '0.00') ENGINE=InnoDB DEFAULT CHARSET=latin1; 

請檢查:我正在考慮1級深度:

select * , s.ItemSize as minSize from similar_test as p 
join similar_test a s on s.Stock= p.SimilarStock 
where p.Sock='A' 
order by s.itemSize 
limit 1 

如果不解決你的問題作爲您在評論中說的其他選項是:

a。創建另一個表,它將保存PRE-計算所需值

b。編寫一個存儲過程,通過項目列表直到N級,因爲N未指定 在這種情況下(如我懷疑的)

c。執行排序和分組PHP /或任何其他語言使用的是

,這也可以幫助你hierarchical data
問候

+0

@ sakhunzai-它對A運行良好,但我們必須在整個表中運行此查詢,並且我們不知道哪個項目與多少項目以及深度有多相似。順便說一下,感謝您的努力和時間 – 2012-03-29 07:36:02

+0

檢查我已經更新了我的回覆,歡迎您:) – sakhunzai 2012-03-29 07:40:24