SQL-запрос не возвращает неуникальное значение в таблице

0

У меня есть база данных MySQL для инвестора, чтобы отслеживать его инвестиции:

  • в таблице "сделка" есть информация об инвестициях, включая различные категории инвестиций (asset_class).
  • Другая таблица ("обновления") отслеживает обновления определенных инвестиций (название инвестиций, дата и множество финансовых данных).

Я хочу написать запрос, который позволяет пользователю выбирать все обновления из "обновлений" под определенным классом asset_class. Однако, как уже упоминалось, asset_class находится в таблице инвестиций. Я написал следующий запрос:

SELECT *
FROM updates
WHERE updates.invest_name IN (SELECT deal.deal_name
                              FROM deal
                              WHERE deal.asset_class = '$asset_class'
                             ); 

Я использую PHP, поэтому $asset_class - это выбранная переменная asset_class. Однако запрос возвращает только уникальные имена обновлений, но я хочу видеть ВСЕ обновления для данного класса asset_class, даже если несколько обновлений сделаны под одним именем инвестиций. Любой совет? Спасибо!

  • 0
    Ваш запрос делает то, что вы намерены. Если у вас есть проблема с результатами, это может быть в коде PHP.
  • 0
    Вы можете добавить пример данных / желаемых результатов (или задать другой вопрос с этой информацией).
Теги:

1 ответ

2

Ваш запрос должен делать то, что вы намереваетесь. В общем, однако, этот тип запроса будет написан с использованием JOIN. Более важно использовать заполнитель параметров вместо строк запросов:

SELECT u.*
FROM updates u JOIN
     deal d
     ON u.invest_name = d.deal_name
WHERE d.asset_class = ?;

Это может использовать индексы по deal(asset_class, deal_name) и updates(invest_name).

? представляет собой параметр, который вы передаете в запрос при его запуске. Точный синтаксис зависит от того, как вы делаете вызов.

  • 0
    Привет, я попробовал оба из них в консоли MySQL, но я все еще не получаю все результаты из таблицы обновлений. Я сделал снимок экрана, но не вижу необходимости прикреплять его здесь. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню