Сравните две таблицы БД и скройте существующие элементы - PullRequest
0 голосов
/ 19 марта 2012

Я создаю корзину для покупок, и у меня возникает одна проблема: когда кто-то заказывает товар, мне нужно скрыть этот товар из распечатанного списка товаров в базе данных MySQL (хранится в таблице items), если этот товар уже куплен. (Это другие пользователи не могут добавить этот товар в корзину, если кто-то уже сделал это ранее и купил его.) Купленные предметы хранятся в другой таблице MySQL orders. Поэтому как-то нужно сравнить эти две таблицы и отфильтровать эти товары из списка товаров, которые заказаны. Любые советы?

Ответы [ 3 ]

0 голосов
/ 19 марта 2012

Ответ Травести, использование подзапроса - это хорошо. Другой способ будет использовать соединение:

SELECT items.* FROM items 
LEFT OUTER JOIN orders
ON items.item_id = orders.item_id 
WHERE orders.item_id IS NULL -- only those which had no join
0 голосов
/ 19 марта 2012

Ваша структура может нуждаться в пересмотре.Система инвентаризации обычно структурирована так, что есть таблица товаров, в которой есть столбец количества (тип int).Этот столбец должен содержать количество доступных запасов.Затем вы должны заполнить это число в соответствии с имеющимся у вас инвентарем.Если кто-то покупает этот товар, вы должны вычесть сумму, которую он купил.Таким образом, вам не нужно создавать новую строку для каждого элемента, который у вас есть в наличии.В вашем пользовательском интерфейсе вы должны отобразить инвентарь, который у вас есть в наличии.(Товары, столбец количества которых больше 0)

0 голосов
/ 19 марта 2012

Вы можете сделать что-то вроде этого:

SELECT * FROM items WHERE item_id NOT IN (SELECT item_id FROM orders);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...