特定の顧客の割引リストを選択しようとしていますが、顧客がその品目の部品番号を指定した場合、製品グループから最も高い割引を 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 フィドル