2012-03-19 2 views
0

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

ответ

0

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

SELECT * FROM items WHERE item_id NOT IN (SELECT item_id FROM orders); 
0

ответ травести, используя подзапрос хорошо. Другим способом будет использование соединения:

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

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

+0

Я согласен с этим. Это гораздо более гибко, поэтому вам не нужно иметь две записи в таблице 'items' только потому, что у вас есть два одинаковых точных элемента. – Travesty3