Добавление строки для условия соединения в SQL - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть две таблицы, статьи и журнал.Я пытаюсь объединить две таблицы и искать только статьи, которые появляются в журнале.Единственное отношение, которое имеют две таблицы, - это article.slug, который показывает заголовок article, и log.path, который показывает тот же текст article.slug, но с «/ article /» в начале.Пример:

Это log.path: '/ article / bad-вещи-ушли' Это article.slug: 'bad-вещи-ушли'

Я пытаюсьсделайте это:

        SELECT articles.title, count 
        FROM articles join
             (SELECT path, COUNT(*) as count 
              FROM log
              GROUP BY path
              ORDER BY count desc
             ) as a
             ON ('/article/' + articles.slug) = a.path

, но это не работает, так как говорит, что я не могу добавить строку '/ article /' к файлам.s.sg.

Есть ли способ сделать это?Благодаря.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Я подозреваю, что вы хотите:

        SELECT a.title, l.count 
        FROM articles a join
             (SELECT l.path, COUNT(*) as count 
              FROM log l
              GROUP BY l.path
             ) l
             ON ('/article/' || a.slug) = l.path
        ORDER BY l.count desc;

Примечания:

  • Postgres использует стандартный оператор || для конкатенации строк.
  • Порядок в подзапросене имеет ничего общего с упорядочением во внешнем запросе.
  • Используйте псевдонимы таблиц, которые относятся к имени таблицы или подзапросу.
  • Квалифицируйте все имена столбцов.
0 голосов
/ 29 сентября 2018

используйте функцию CONCAT

SELECT CONCAT ('/ article /', столбец);

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