2013-01-24 34 views
0

我需要在jQuery中使用查詢中的元素數組。我的查詢是:如何在查詢中使用數組中的元素,如

"SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', ('" + id + "'), ',', '%')" 

其中ID是一個動態數組,所以我基本上需要

"SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', ('" + id[0] + "'), ',', '%') **OR LIKE id[1] OR LIKE id[2]**..." 

如果我將使用foreach循環將取決於只在數組中的元素之一返回行,它不支持像..或類似..邏輯

var idArr = id.split(","); 
idArr.forEach(function (id) { 
    _runQuery("SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', '" + id + "', ',', '%')", function (rows) {....} 
+0

這個查詢是針對數據庫運行還是另一種JavaScript框架? – codingbiz

回答

-1

最簡單的回答你的問題是:標籤可能應該是一個單獨的表,那麼你就必須:

「SELECT * FROM項目作爲p加入標籤作爲噸t.project_id = p.id其中t.tag in(id [0],id [1],id [2] ....)「

當然,你可以通過連接輕鬆生成所需的id字符串(id.join(「,」)wil我可能會這樣做。

或者,正如@codingbiz指出的那樣,您可以使用更復雜的id.join()調用來擴展所需的OR,但這種方法存在限制,並且這與查詢的複雜性有關,因爲您可以合理正常化之前開始看起來像一個非常好的主意。

+0

我的擔心是這看起來不符合JavaScript。在JavaScript中編寫SQL語句的框架被鼓勵或實踐? – codingbiz

+0

我分享你的關注。我假設這是一個nodejs服務器端應用程序,並且jquery標記是錯誤的。如果這是在客戶端完成,我不寒而慄。 – Recurse

+0

謝謝,我生成了2個字符串,然後將它們添加到select中,但是使用join看起來更優雅 – user2001019

相關問題