2012-03-29 78 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