2009-07-28 117 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,并使用某个函数来截断字符串的最后部分。