sqlite подзапросы с group_concat в качестве столбцов в операторах выбора - PullRequest
2 голосов
/ 23 октября 2010

У меня есть две таблицы, одна содержит список предметов, который называется watch_list с некоторыми важными атрибутами, а другая - просто список цен, который называется price_history.Я хотел бы сгруппировать 10 самых низких цен в один столбец с помощью операции group_concat, а затем создать строку с атрибутами элемента от watch_list вместе с 10 самыми низкими ценами для каждого элемента в watch_list.Сначала я попробовал соединения, но потом понял, что операции выполняются в неправильном порядке, поэтому я никак не мог получить желаемый результат с помощью операции соединения.Затем я попробовал очевидную вещь и просто запросил price_history для каждой строки в watch_list и просто склеил все вместе в хост-среде, которая работала, но казалась очень неэффективной.Теперь у меня есть следующий запрос, который выглядит так, как будто он должен работать, но он не дает мне желаемых результатов.Я хотел бы знать, что не так со следующим утверждением:

select w.asin,w.title,
  (select group_concat(lowest_used_price) from price_history as p 
    where p.asin=w.asin limit 10) 
  as lowest_used 
    from watch_list as w

По сути, я хочу, чтобы операция limit происходила до того, как group_concat что-то сделает, но я не могу придумать оператора SQL, которыйсделай это.

1 Ответ

3 голосов
/ 23 октября 2010

Не берите в голову, как кто-то однажды сказал: «Все проблемы в информатике могут быть решены с помощью другого уровня косвенности». и в этом случае дополнительный select подзапрос добился цели:

select w.asin,w.title,
  (select group_concat(lowest_used_price) 
     from (select lowest_used_price from price_history as p 
       where p.asin=w.asin limit 10)) as lowest_used 
  from watch_list as w
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...