another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Как правильно составить запрос к базе?

Суть: первый запрос получает из базы несколько строк с разными id. Посредством второго запроса нужно вытащить из базы все записи, в поле owner_id которых присутствует какой-либо из id, полученных в первом запросе.

Была идея собрать id из первого запроса в массив и потом подставить их в запрос, объединив условия AND'ами.
  • Вопрос задан
  • 3329 просмотров
Решения вопроса 5
@SashaSkot
Специалист широкого профиля
Вариантов 2:
1:
SELECT
t2.*
FROM t1 INNER JOIN t2 ON t1.id = t2.owner_id
2.
SELECT
t2.*
FROM t2 WHERE t2.owner_id IN (SELECT t1.id FROM t1)

Учите матчасть :)
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
"WHERE `owner_id` IN (".implode(",", $ids).")"
Ответ написан
Комментировать
@HabRuLeX
Лучше всего использовать подзапрос. Т.е. значения из первой выборки как условие отбора данных для второй.

SELECT (Поля которые нужны из Таблица2) FROM (Таблица2)
WHERE Таблица2.owner_id IN (SELECT id FROM Таблица1)
Ответ написан
Комментировать
egor_nullptr
@egor_nullptr
Комментировать
@HabRuLeX
String qver = "SELECT T2.* FROM WHERE T2.owner_id IN (";

foreach ($records as $value) {
    qver  +=  $value[0];
    if($value != end($records)){
         qver  +=  ", ";
    }
}
qver += ")";

Примерно как то так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы