analog table
| num | brand | idanalog |
| 123 | BMW | 5 |
| 124 | VW | 5 |
| 125 | AUDI | 7 |
Алгоритм такой. Берем все номера из price, где idprice = 1.
Потом получаем все номера-аналоги из таблицы analog
SELECT * FROM analog WHERE idanalog = (SELECT idanalog FROM analog WHERE num=123) (Это для конкретного номера)
Потом по всем аналогам ищем совпадения из таблицы price с idprice = 2.
Я перебираю все номера, которые есть в прайсе с idprice = 1. Но делаю это в пхп и длится это 4 часа)
И получается что для каждого номера в прайсе с ид = 1 я вытаскиваю все эти данные, а я хочу их как-то агрегировать, но не знаю как(
Итог: вытащить из второго прайса (idprice=2) все номера и их аналоги (имея таблицу аналоги) на основе номеров из первого прайса
romy4: в зависимости от СУБД и её версии. Это не коррелирующий запрос, отдельный запрос для каждой строки не требуется. Нормальная СУБД и даже современный mysql дадут нормальный план. На postgresql лично видел план для in subquery лучше, чем для эквивалентного join.
4 часа? Сколько у вас там записей?
Безотносительно вашего вопроса, мне кажется вам не хватает индексов в таблицах или они не корректны, если они есть
А по поводу вопроса - попробуйте использовать IN в выборках