2012-03-19 5 views
0

장바구니를 만들고 있는데 한 가지 문제가 있습니다. 누군가 주문할 때 인쇄 된 MySQL DB 항목 목록 (테이블 items에 저장되어 있음)에서 해당 항목을 숨길 필요가 있습니다 항목이 이미 구입되었습니다. (다른 사용자가 이미 이전에이를 수행하고 구입 한 경우 다른 사용자가이 항목을 장바구니에 추가 할 수 없습니다.) 구입 한 항목은 다른 MySQL 테이블 orders에 저장됩니다. 따라서 어떻게 든이 두 테이블을 비교하고 주문 된 상품 목록에서이 항목을 여과해야합니다. 조언? 하위 쿼리가 좋은 사용,두 개의 DB 테이블을 비교하고 기존 항목을 숨기기

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 유형) 열이있는 항목 테이블이 있다는 것입니다. 이 열에는 사용 가능한 인벤토리의 양이 포함되어야합니다. 그런 다음 해당 인벤토리와 일치하는 번호를 채워야합니다. 누군가가이 품목을 구입하면 구입 한 금액을 공제해야합니다. 이렇게하면 재고가있는 모든 품목에 대해 새 행을 만들 필요가 없습니다. 귀하의 UI에서 재고가있는 재고를 표시해야합니다. (수량 열이 0보다 큰 항목)

+0

동의합니다. 이런 식으로 훨씬 더 유연 해 보입니다. 그래서 똑같은 아이템 두 개를 가지고 있기 때문에'items' 테이블에 두 개의 엔트리가있을 필요가 없습니다. – Travesty3

관련 문제