2015-03-31 66 views
0

我從來沒有問題與查詢之前,但我只是無法得到這個工作。我有2個表,1個稱爲items_sale,另一個是item_list。我的表單有一個下拉菜單,它從item_list中獲取所有項目。Php mysqli刪除整個行如果重複

我需要做的是阻止任何項目已經在items_sale列表+ user_id =當前用戶的ID下拉列表中。

因此,例如我有項目2和5出售,這意味着項目2和5不應顯示在下拉菜單中。

我環顧四周,發現像添加DISTINCT和UNION的解決方案,但似乎無法讓它刪除整行。例如,DISTINCT只刪除了1個值並保留了其他值。

items_sale: items_sale item_list: item_list

+1

你可以使用NOT IN子查詢?你目前的查詢是什麼樣的? – Maximus2012 2015-03-31 16:35:24

回答

2

我會做的第一件事是把所有的用戶銷售到一個數組中的項目,然後從項目表,其中不拉的所有項目在陣列中。

<?php 
    $conn = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

    $currentUser = '1234'; 

    $items = $conn->query("SELECT * FROM item_list WHERE item_ID NOT IN (SELECT item_id FROM items_sale WHERE user_id = '$currentUser')"); 

編輯:更改爲子查詢,而不是兩個單獨的查詢

+1

我認爲你仍然需要通過user_id過濾你的第二個查詢。正因爲如此,您可以將2個查詢合併爲1。 – Maximus2012 2015-03-31 16:47:38

+0

太好了!我不知道你可以使用NOT IN作爲命令,我會更頻繁地使用它。 – Crecket 2015-03-31 17:29:31