Подсчет количества экземпляров некоторых данных в столбце mySQL - PullRequest
2 голосов
/ 18 декабря 2008

У меня есть 1 таблица с именем urltracker, которая содержит информацию о количестве нажатий на конкретный URL. Таблица состоит из 4 столбцов: id, urlclicked, referrer и timestamp. Urltracker создает еще одну запись в таблице каждый раз, когда щелкает URL.

То, что я хотел бы сделать, это отобразить конкретный URL-адрес и количество нажатий на него, после чего пользователь сможет развернуть данные, щелкнув, чтобы показать все конкретные моменты, когда этот URL-адрес был нажат.

Я не эксперт по SQL, но это звучит так, как будто мне нужно сначала отобразить все отдельные URL-адреса, а затем выполнить подзапрос, который отображает все записи для этого конкретного URL.

Правильно ли я думаю об этом или есть более простой способ?

Ответы [ 4 ]

3 голосов
/ 18 декабря 2008

Что-то подобное должно сработать: Во-первых:

SELECT urlclicked, 
       COUNT(*)
  FROM urltracker
GROUP BY urlclicked

А потом, когда пользователь нажимает на какой-то URL:

SELECT id, 
       urlclicked, 
       referrer,
       timestamp
FROM urltracker
WHERE urlclicked = ?clickedUrl

для отображения деталей.

2 голосов
/ 18 декабря 2008

Одна вещь, которую следует рассмотреть, - это использование двух таблиц - одна таблица, которая содержит уникальные URL-адреса, и другая, которая хранит информацию о кликах (и либо использует уникальный порядковый номер для присоединения к ним, либо URL-адрес (поскольку он уникален))

Но чтобы ответить на ваш вопрос - да, у меня был бы один запрос для отображения URL-адресов и второй запрос для получения данных для конкретного URL-адреса (только если / когда пользователь запрашивает эту информацию).

0 голосов
/ 18 декабря 2008

Да, в правильном направлении:

SELECT id, 
       tb1.urlclicked, 
       referrer,
       timestamp, tb2.totaltimesclicked
FROM urltracker as tb1
inner join 
(SELECT urlclicked, 
       COUNT(urlclicked) as totaltimesclicked
  FROM urltracker
GROUP BY urlclicked) as tb2
on tb1.urlclicked = tb2.urlclicked 

Это отобразит всю информацию вместе с тем, сколько раз нажимается каждый URL.

0 голосов
/ 18 декабря 2008

Вы должны иметь возможность сделать что-то подобное, чтобы получить итоговые значения для каждого URL:

SELECT urlclicked, COUNT(urlclicked) AS total
FROM urltracker
GROUP BY urlclicked

Это то, что вы преследовали?

...