2013-02-03 62 views
0

這可能很容易解決,但我在這段代碼中遇到了問題 - 我是一個自學成才的PHP新手,代碼I'已經想出了似乎並不想工作。PHP MySQL - 從表1中選擇不在表2中的值

該頁面適用於體育比賽的在線輸入系統。裁判的細節存儲在表格「club_judges」中,用戶可以通過將它們複製到「competition_judges」中將其輸入比賽。這是通過表格中的複選框形式完成的。

我想增加功能,法官誰已經添加到競爭中沒有出現在導入的形式,但我的代碼似乎並沒有工作。我正在使用「bg_number」(運動的身份號碼)的唯一字段來搜索現有條目。

當前代碼:

$existing_judges = mysql_query("SELECT bg_number FROM competition_judges WHERE competition='Test Competition'"); 
$existing_judges_fetch = mysql_fetch_array($existing_judges); 
$existing_judges_array = "('" . implode("', '", $existing_judges_fetch) . "');" ; 

$query = "SELECT * FROM club_judges WHERE (`club`='Test Club') AND (`bg_number` NOT IN '$existing_judges_array') ORDER BY name "; 
$result = mysql_query($query) or die(mysql_error()); 

錯誤顯示:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''('1234567', '1234567');') ORDER BY name' at line 1 

僅供參考1234567是對我的考驗法官bg_number。

任何幫助將不勝感激!

回答

0

爲什麼不ü只使用一個查詢

SELECT * 
FROM club_judges 
WHERE `club`='Test Club' 
AND `bg_number` 
NOT IN (SELECT bg_number FROM competition_judges WHERE competition='Test Competition') 
ORDER BY name 
+0

這樣一個簡單的答案 - 太感謝你了!它工作出色,我認爲會有一個更簡單的方法來做到這一點! – adswayne

+0

歡迎你!祝你好運 –

0

使用可以使用單個查詢,而不是像這樣:

$query = "SELECT * FROM `club_judges` WHERE `club`='Test Club' 
      AND 
      `bg_number` NOT IN 
       (SELECT `bg_number` FROM `competition_judges` WHERE `competition`='Test Competition') 
      ORDER BY `name` "; 
$existing_judges_fetch = mysql_fetch_array($existing_judges); 
$result = mysql_query($query) or die(mysql_error()); 
+0

我最終使用上面給出的結果幾乎與此相同 - 感謝您的輸入! – adswayne

+0

歡迎您! – Abubakkar

0

這裏有一個JOIN版本

SELECT a.* 
FROM club_judges a 
     LEFT JOIN competition_judges b 
      ON a.bg_number = b.bg_number AND 
       b.competition='Test Competition' 
WHERE b.bg_number IS NULL AND 
     a.club = 'Test Club' 
ORDER BY a.name 

爲了充分獲得知識關於加盟,請訪問以下鏈接:

+0

我沒有考慮加入,但我會研究這一點,謝謝! – adswayne

+0

你對於'JOIN'和'IN'之間的性能問題的關注,請參見http://explainextended.com/2009/06/16/in-vs-join-vs-exists/ –

相關問題