2011-03-25 69 views
0

我想從一個mysql數據庫中選擇多行,基於所選列的值,我是新的php和sql,所以這可能是簡單的東西,我似乎無法找到任何與我的情況相似的東西。下面是該查詢我運行:mysql選擇多行,多和/或

SELECT COUNT(userid) AS numrows 
FROM orders 
WHERE (
     `dispatched` = 'no' 
     AND `orderstatus` = 'Complete' 
     AND `category` = 'tosort' 
     ) 
     OR 
     (`category` = 'new') 

這個計算所有字段時,只顯示在10左右。

謝謝, 大衛

+0

請問您可以選擇'SELECT *'而不是'SELECT COUNT(*)'併發布一條不應該算在內的記錄嗎? – Quassnoi 2011-03-25 11:45:58

+0

另外,你使用某種'ORM'?大括號在純MySQL中會失敗,你真的在​​你的查詢中有嗎? – Quassnoi 2011-03-25 11:48:03

+0

嗨Quassnoi,大括號只是我在另一個網站上看到的東西,我必須承認我曾經看過他們以前使用過它。 – David 2011-03-25 12:00:37

回答

0

不要使用括號使用括號。這個工作對我來說:

select count(*) as numrows 
from orders 
where (dispatched = 'no' and orderstatus = 'Complete' and category = 'tosort') 
    or category = 'new'; 
+0

嗨,布賴恩,我只是嘗試一些simlar到這個但如上所述,它會返回一個或多個結果:一個有不完整的orderstaus而不是完成 – David 2011-03-25 12:09:45

+0

除'new'或'tosort'之外,還有其他任何類別嗎?如果是這樣,那麼你需要在你的SQL中考慮所有這些。具有不完整orderstatus的記錄的類別字段的內容是什麼? – 2011-03-25 12:14:16

+0

嗨,布萊恩,是的,還有一個比上述兩個類別更多的類別我發佈了一個上面顯示的錯誤示例 – David 2011-03-25 12:23:58

0

什麼是你的錯誤?因爲現在看代碼,看起來沒問題。

您可能希望記錄具有「派遣 - 不,訂單 - 完成和類別 - 託斯特」或..任何與'類別 - 新'。

編輯:哦,遠射,也許你需要更換{和}與()

+0

嗨Gerben對不起,我錯過了你的消息,我確實嘗試了這個,它使查詢工作,但其他人在這裏只是幫助我解決另一個問題。謝謝你的幫助,但我更近了一步!:) – David 2011-03-25 12:25:10

0

謝謝大家對我付出的快速回信,周圍多一點我設法得到這個工作後打。在這裏,如果你有人正在閱讀本文,尋找相同的答案:

SELECT COUNT(userid) AS numrows FROM orders WHERE (`dispatched` = 'no' AND `orderstatus` = 'Complete' AND `category` = 'tosort') OR (`dispatched` = 'no' AND `orderstatus` = 'Complete' AND `category` = 'new') 

再次感謝!

+0

這是更簡單的方法做同樣的事情: select numrows(\ *)as numrows 來自訂單 ,其中dispatched ='no'且orderstatus ='Complete'和類別('tosort','new'); 如果您只是要計算結果集中返回的記錄數,則最好使用count(*)。如果您在count(fieldname)中顯式指定一個字段名稱,則該字段中包含空值的任何記錄都不會包含在該計數中。詳情請參閱http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count。 – 2011-03-25 13:03:46

+0

嗨,布賴恩,謝謝你提供的信息,我已經更新了我的腳本,這是一個更乾淨的方式做到這一點。 – David 2011-03-25 14:06:55