2011-12-05 29 views
0

我有一个库存数据库。一些产品只能在一个多件包装中购买。我希望我的客户能够对各个项目执行产品搜索,如果找到匹配项,则返回相应的多包装。MySQL结果重定向/链接行?

Table  | ID | Length | Height | Parent | 
----------+----+--------+--------+--------+ 
Product1 | 1 | 100 | 500 | 3  | - Don't return this 
Product2 | 2 | 200 | 50  | 3  | - Don't return this 
Multipack | 3 | 200 | 500 | NULL | + Return this 

如果客户搜索产品长度< 150,束条应该是因为产品1个匹配这一标准退回。 如果客户搜索长度为< 600的产品,即使所有三个条目都符合此标准,该组合包应该只返回一次。有没有办法告诉MySQL Product1和Product2应该作为Multipack返回查询结果?处理这个问题的最好方法是什么?该数据库有大约20,000行和200多个包装。谢谢 - skibulk

+0

您如何知道Multipack与Product1和Product2有关? –

+0

它说多包装包含产品1 – abcde123483

+0

用“父”列更新了表 – skibulk

回答

0

我给你一些精神食粮......

怎么样返回符合条件的非multpack ID的不同列表中的WHERE子句中的子查询。然后AND NULL条件,所以你只能选择多包装。

SELECT DISTINCT Table,Length,Height FROM Inventory WHERE ID IN (SELECT DISTINCT ID FROM Inventory WHERE length < x and Parent => 0) AND Parent = NULL