Рассчитывать на одну и ту же таблицу - PullRequest
1 голос
/ 13 июля 2010

У меня проблема с моим оператором SQL:

Структура таблицы:

CREATE TABLE "tags" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "page_id" INTEGER NOT NULL,
  "title" TEXT NOT NULL
);

Теперь я хочу выбрать все теги на одной странице и частоту этого тега ввся база данных.У меня есть следующий оператор SQL:

SELECT title, title as t,
(SELECT COUNT(*) FROM tags WHERE title=t) as count
FROM tags WHERE page_id=42 ORDER BY count DESC, title
COLLATE NOCASE ASC;

Но сообщение об ошибке, которое я получаю от драйвера SQLite3 в PHP:

no such column: t

Как мне написать оператор SQL, чтобыя получаю результат, который хочу получить?

Спасибо, Леву

Ответы [ 3 ]

2 голосов
/ 13 июля 2010

Попробуйте это

SELECT title, 
(SELECT COUNT(*) FROM tags WHERE title=t.title) as count
FROM tags t 
WHERE page_id=42 
ORDER BY count DESC, title
COLLATE NOCASE ASC;
1 голос
/ 13 июля 2010

ты имеешь в виду, как это ...

SELECT title, COUNT(*) as freq
FROM tags
WHERE page_id=42
GROUP BY title
ORDER BY freq DESC, title
0 голосов
/ 13 июля 2010
select title, count(*) as frequency
from tags
where page_id = 42
group by title
order by count(*) desc

Если вы хотите, чтобы теги отображались более одного

select title, count(*) as frequency
from tags
where page_id = 42
group by title
having count(*) > 1
order by count(*) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...