У меня есть таблица со списком идентификаторов. Я использую запрос для его выбора, а затем извлекаю его как массив (я знаю, как это сделать). Затем я хочу выбрать строки из другой таблицы, где идентификаторы находятся в массиве, полученном ранее.
Как мне это сделать? Заранее спасибо.
Вы, скорее всего, захотите выполнить запрос типа WHERE field IN (...)
. Это по сути эквивалент WHERE field=X or field=Y or field=Z or ...
для каждого значения, указанного в предложении IN
.
Учитывая, что у вас уже есть массив идентификаторов, самый простой способ – построить запрос следующим образом:
$where_in = implode(',', $ids_array); $query = "SELECT ... FROM yourtable WHERE idfield IN ($where_in);";
Применяются обычные условия – будьте осторожны с отверстиями для инъекций SQL, всегда проверяйте результаты запроса на отказ и т. Д.
вы можете сделать это в одном запросе
что-то вроде этого SELECT table2.id FROM table2 WHERE table2.id IN (SELECT table1.id FROM table1 WHERE blablabla)
select value1,value2 from table2 where id in (1,2,3,4,5)
Вы могли бы избежать этого и рассмотреть таблицы JOIN . Один запрос будет получать согласованные записи по идентификаторам.
для примера
SELECT * FROM table1 t1 JOIN table2 t2 ON t1.ID=t2.ID
Предположим, что $values
– это массив, вы можете использовать ключевое слово mysql IN и функцию php-implode для построения запроса
$sql = "SELECT a, b FROM table WHERE id IN (" . implode(", ",$values) . ")";
implode будет присоединяться к элементам массива, используя ","