SQL-запрос не возвращает неуникальное значение в таблице - PullRequest
0 голосов
/ 27 мая 2018

У меня есть база данных 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, даже если под одним инвестиционным именем сделано несколько обновлений.Любой совет?Спасибо!

1 Ответ

0 голосов
/ 27 мая 2018

Ваш запрос должен делать то, что вы собираетесь.В целом, однако, этот тип запроса будет написан с использованием 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).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...