2011-12-05 9 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の商品を検索した場合、3つの項目がすべてこの基準に一致していても、マルチパックは1回だけ返されます。クエリ結果に対してProduct1とProduct2をMultipackとして返すべきであることをMySQLに伝える方法はありますか?これを処理する最善の方法は何ですか?データベースには、約20,000行と200のマルチパックがあります。おかげで - 私はあなたの思考のためのいくつかの食べ物をあげる...

どのようにあなたの条件に一致する非multpack IDの明確なリストを返しますWHERE句のサブクエリについて

+0

マルチパックがProduct1とProduct2に関連していることをどのように知っていますか? –

+0

マルチパックには製品1が含まれているとはどこですか? – abcde123483

+0

テーブルを「親」列で更新しました – skibulk

答えて

0

をskibulk。次に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