2009-07-28 116 views
0

我有一個數組與zipcodes索引的距離。現在我需要選擇基於該拉鍊比薩餅店 ,一些事情,如:多個mysql選擇查詢

ziparray[] 

foreach loop 

SELECT * FROM location WHERE food='pizza' and zip='ziparray[]' 

//do stuff 

拉鍊陣列可以長到30條或40拉鍊的時間,這意味着30個或40 querys。 有沒有更好的方法來做到這一點?我希望找出存儲過程 這樣我就可以發送參數並讓它發回數據(如果可以的話)。

回答

4
SELECT * 
FROM location 
WHERE food='pizza' 
    and zip IN(90210, 55555, etc..) 
0

如何使用IN運算符?

SELECT column_name(s) 
FROM table_name 
WHERE column_name IN (value1,value2,...) 
0

你可能要考慮改變着數組IN子句,這樣你的查詢 變成SELECT * FROM位置WHERE食品= '比薩' 和zip在( '03750', '03532' ,..其他50個郵政編碼)

0

您可以使用for循環構造一個查詢。這裏有一個PHP的例子:

$zipArray = array(); 

$query = "SELECT * FROM location WHERE food='pizza' AND (1=2"; 


foreach($zipArray as $zip){ 
    $query .= "OR zip ='$zip' "; 
} 

$ query。=「)」;

1 = 2部分有點草率,您可以在每個添加的末尾在foreach循環中添加一個OR,並使用某個函數來截斷字符串的最後部分。