nSnayp
@nSnayp

Как написать SQL запрос?

есть две таблицы (price, analog)

price table
| num | brand | idprice |
| 123 | BMW | 1 |
| 124 | VW | 1 |
| 124 | VW | 2 |
| 125 | AUDI | 2 |

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) все номера и их аналоги (имея таблицу аналоги) на основе номеров из первого прайса
  • Вопрос задан
  • 604 просмотра
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
если правильно понял проблему, то для выборки аналогов по определенному idprice

SELECT * FROM analog  WHERE num IN (SELECT num FROM price WHERE idprice = 1)
Ответ написан
AloneCoder
@AloneCoder
[object Object]
4 часа? Сколько у вас там записей?
Безотносительно вашего вопроса, мне кажется вам не хватает индексов в таблицах или они не корректны, если они есть
А по поводу вопроса - попробуйте использовать IN в выборках
Ответ написан
Ваш ответ на вопрос

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

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