Как получить строки из БД по многим идентификаторам

#php #mysql #pdo

#php #mysql #pdo

Вопрос:

У меня есть массив идентификаторов ставок из одной таблицы, и я должен получать ставки из bids таблицы по этим идентификаторам. Возможно ли получить их одним запросом, не делая много-много запросов к БД или не делая сверхдлинный запрос с

 WHERE ... 
  AND ... 
  AND ...
   -- etc
  

с помощью PDO??? и «просмотры в БД» тоже не вариант

Ответ №1:

Вероятно, вам нужно что-то вроде:

 SELECT b.*
FROM bids b
WHERE id IN (SELECT bid_id FROM table1);
  

Или, может быть:

 SELECT b.*
FROM bids b
WHERE EXISTS (SELECT 1 FROM table1 t1 WHERE t1.bid_id = b.id);
  

То есть, в идеале вы должны обрабатывать это в MySQL, если можете. Как только вы перенесете свой массив идентификаторов ставок из базы данных в PHP, вам придется проделать больше работы, чтобы найти совпадения.

Ответ №2:

Вы создаете соединение для двух таблиц (вашей первой таблицы, которую я вызвал first_table , поскольку вы не указали, как она была вызвана) по их общим идентификаторам, что приведет к получению всех результатов, где идентификатор существует в обеих таблицах.

Соответствующим образом настройте имена столбцов и таблиц.

 SELECT b.*
FROM first_table a
JOIN bids b
  ON b.id = a.id