2009-07-28 2 views
0

У меня есть массив с индексом zipcodes, проиндексированным расстоянием. Теперь мне нужно выбрать пиццу магазины на основе молний, ​​некоторые вещи, как:несколько запросов mysql select

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 места, где еда = «пицца» и зип в («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 часть немного неаккуратная, вы можете добавить OR в конце каждого добавления в цикл foreach и использовать некоторую функцию для отсечения последней части строки.

Смежные вопросы