0

特定の顧客の割引リストを選択しようとしていますが、顧客がその品目の部品番号を指定した場合、製品グループから最も高い割引を 1 つだけ含めます。

Customers table:
id      name
1226    ESPRESSO SPECIALTY FOODS
1227    ESSROC   ACCOUNTING SERVICES
1228    EVAPAR

割引表:

prod_code_id    part_num    account_id  multiplier
123               28H57    1228         0.75
123                        1228         0.8
303                        1228         0.65

アイテム表:

prod_code_id    item    description price
123            28h57    Oil         50.00
123            0072     HOSE        62.31
123             0147    BOLT        0.98
303            0147     BOLT        1.39
303             0211    HEX SOCKET  1.86

これが私がやろうとしていることです

SELECT 

  items.item,
  items.description,
  items.price,
  discounts.multiplier
FROM items
LEFT JOIN 
    (
        SELECT multiplier,prod_code_id
        FROM ".$type."_discounts 

        WHERE account_id='".$_POST['accountId']."'
        ORDER BY part_num collate utf8_general_ci LIKE '%".$_POST['searchPart']."%' DESC

    ) AS discounts ON items.prod_code_id=discounts.prod_code_id

WHERE items.item collate utf8_general_ci LIKE '%".$search_word."%'
LIMIT 8

したがって、入力したサブクエリに特別割引のある部品番号があるとします。

SELECT prod_code_id, part_num, account_id,multiplier
    FROM customers_discounts 
    WHERE account_id=1228
ORDER BY part_num collate utf8_general_ci LIKE '%28h57%' DESC

私が得ている出力で

prod_code_id    part_num    account_id  multiplier
123             28H57           1228         0.75
123                             1228         0.8
303                             1228         0.65

手に入れたいだけのとき

prod_code_id    part_num    account_id  multiplier
123                 28H57       1228        0.75
303                             1228         0.65

一方、部品番号が指定されていないか、特別割引がない場合は、次のものが必要です。

prod_code_id    part_num    account_id  multiplier
123                              1228      0.8
303                              1228      0.65

MYSQL フィドル リンク: MYSQL フィドル

4

0 に答える 0