2014-12-04 105 views
1

我正在研究一個小應用程序,該程序允許我根據某些條件(如公司級別,付款,項目狀態等)來跟蹤我的工作優先級。sql - 排除結果集的結果,其中表值等於

我有一個頁面向我顯示所有公司及其分類(如上所述)的分類。

舉個例子,來拉我的所有普通待辦事項,我這樣做:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'COMPANY NAME HERE' ORDER BY company_to_do ASC;"; 

上述內容,說我有10家企業中的數據庫的一般待辦事項,那麼這個翻出所有十個。

現在我想要做的是,除了現在拉同樣的數據,我想排除任何返回的值,包括一個特定的公司名稱。例如,如果我有10家公司的普通Todos,其中一家公司被稱爲「公司A」,那麼我希望上面的查詢排除公司A,從而在我的頁面上顯示9個條目。

我會做一些像兩輪牛車 [僞代碼]

<?php 

if ($row['company_to_do'] == 'COMPANY A') { 

?> 

code here with some css class that gets hidden because its COMPANY A which i dont want to see. 

<?php } ?> 

但這是太亂了...... 我知道它可以在SQL中完成,我一直都在尋找了一圈,發現NOT IN和NOT EXIST

,但它只是不工作,我有一個爛攤子......

編輯***

這些都是2瓦特ays按照以下答覆進行了嘗試,雖然我沒有得到任何錯誤,但「公司A」仍與其餘的信息一起顯示。

香港專業教育學院的嘗試:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'GENERAL TO-DO' AND company_to_do <> 'COMPANY A' ORDER BY company_to_do ASC;」; 

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'GENERAL TO-DO' AND company_to_do NOT IN ('COMPANY A') ORDER BY company_to_do ASC;」; 

任何想法,我怎麼能合併一個NOT IN/NOT上面我的查詢存在嗎?

+0

爲什麼向下票 – somdow 2014-12-04 20:04:39

回答

0

你可以使用不操作<>

SELECT pub_name,country,pub_city,estd 
FROM publisher 
WHERE country <>"USA"; 

這會拉低所有的出版商沒有從美國。

+0

嗨安東尼。我走了進去,把它放在這樣的://// $ pullAllGeneralTodosDone =「選擇*從to_dos到哪裏to_do_is_for ='$ login_usrname'AND is_to_do_complete ='no'AND company_to_do ='一般工作'和company_to_do < >'公司A'order by company_to_do ASC;'; \\\\並且它不起作用,我沒有得到任何錯誤或任何東西,但公司A仍然顯示任何想法?謝謝先進的 – somdow 2014-12-05 19:37:38

0

我很確定不是你的答案,如果你想簡潔。值,雖然已經被連接起來並放在括號:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for 
= '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do 
= 'COMPANY NAME HERE' AND company_to_do NOT IN 
('COMPANY A','FOOBAR WIDGETS, LLC','MICROSOFT CORPORATION') 
ORDER BY company_to_do ASC;"; 

的問題是串聯和括號,而且,這可能陷入下來,如果你有大的數據集或大量排除。

+0

你好。我沒有得到任何錯誤,它仍然不起作用。這是什麼我補充說。 /// $ pullAllGeneralTodosDone =「SELECT * FROM to_dos WHERE to_do_is_for ='$ login_usrname'AND is_to_do_complete ='no'AND company_to_do ='一般工作'和company_to_do不在('COMPANY A')order by company_to_do ASC;」; \\\。再一次,它沒有拋出任何錯誤,但「公司A」仍然顯示。有任何想法嗎? – somdow 2014-12-05 19:26:21

+0

除了檢查運算符優先級的文檔(或者只是簡短地嘗試並嘗試一些不同的括號分組),否;無論如何,不​​是沒有一個樣本數據集來測試。 – 2014-12-05 19:28:49

0

請試試這個:

$ pullAllGeneralTodosDone = 「SELECT * FROM to_dos WHERE to_do_is_for =「」 $ login_usrname。「」 AND is_to_do_complete = '不',company_to_do = '一般到-DO' AND company_to_do <> '數字白板' ORDER BY company_to_do ASC;」;?

問候, 塔倫

+0

您應該使用[Markdown](http://stackoverflow.com/editing-help)來提高答案的可讀性。 – 2014-12-06 13:22:02