Допустим, у меня есть таблица Colours с колонками MainColor (зеленый, синий), Tone (44,17), Brand (Mybrand, Yourbrand и т. Д.), Type (Standard, Special) и доступность
Что мне нужно, это отобразить, согласно запросу, как:
Находясь в поиске 3x Зеленый Тон 44, 8x Зеленый Тон 17 а также 5x Blue Tone 44
Это хранит в массиве, как этот:
Array
(
[0] => Array
(
[MainColor] => Green
[Tone] => 44
[Needed] => 3
)
[1] => Array
(
[MainColor] => Blue
[Tone] => 44
[Needed] => 5
)
[2] => Array
(
[MainColor] => Green
[Tone] => 17
[Needed] => 8
)
)
Что-то вроде
Есть 3x Green Tone 44 (1x MyBrand Normal, 1x Mybrand Special и 1x Yourbrand Standard)
и 8x Green Tone 17 (1x Herbrand Special, 2x Herbrand Standard, 4x Ourbrand Standard и 1x Hisbrand Special)
и 5x Blue Tone 44 (3Mybrand Special и 2x Yourbrand Special)
доступные цвета
Я знаю, что могу получить первые 2 утверждения с чем-то вроде:
SELECT *
FROM Colors
WHERE MainColor IN (array['MainColor']) AND Tone IN (array['Tone'])
А как насчет третьего, который необходимо суммировать и сравнивать (больше или равно необходимому количеству)?
SELECT *
FROM Colors
WHERE MainColor IN (array['MainColor']) AND Tone IN (array['Tone']) AND SUM(Colors.Availability) IN >= (array['Needed'])
Я думаю, что вам нужно найти все бренды, которые имеют этот конкретный цвет / тон, поэтому игнорируйте суммы, просто перечислите их, если они есть.
Затем позвольте пользователю выбрать количество, которое он хочет от каждого бренда на веб-странице. На этом этапе вы можете указать, что сумма выбранных ими брендов равна сумме, которую они уже ввели (может сделать JS, чтобы сделать это до отправки), или просто позволить им иметь столько или мало, сколько они хотят.
Единственная сложность заключается в том, что двум людям предлагаются одинаковые цвета / тона, и они оба пытаются заказать больше товара, чем вы. Затем вам нужно будет проверить, когда они, наконец, прикажут им, что запас еще там.
Других решений пока нет …