Вопрос внутреннего соединения MySQL - PullRequest
0 голосов
/ 19 декабря 2008

У меня есть две таблицы в базе данных MySQL

urltracker с идентификаторами столбцов и щелчками по URL и urlreferrer с id столбцов, url_id и urlreferrer

urltracker на самом деле является просто справочной таблицей, в которой столбец url_id в таблице urlreferrer является связующим звеном между таблицами.

Пример DDL:

CREATE TABLE urltracker (
  id           SERIAL PRIMARY KEY,
  urlclicked   VARCHAR(200) NOT NULL
);

CREATE TABLE urlreferrer (
  id           SERIAL PRIMARY KEY,
  url_id       BIGINT UNSIGNED NOT NULL,
  urlreferrer  VARCHAR(200) NOT NULL
  FOREIGN KEY(url_id) REFERENCES urltracker(id)
);

Что мне нужно сделать, так это объединить две таблицы таким образом, чтобы я мог получить URL, по которому щелкнули, просмотрев таблицу, на которую щелкнули URL, и общее количество ссылок из таблицы urlreferrer для этого конкретного URL.

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

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 19 декабря 2008

Я думаю:

SELECT ut.urlclicked, COUNT(ur.id) 
FROM urltracker ut JOIN urlreferrer ur ON (ut.id = ur.url_id) 
GROUP BY ut.urlclicked

должен это сделать.

1 голос
/ 19 декабря 2008

если вы хотите это для всех URL,

 Select urlClicked, Count(*)
   From urlReferrer R 
       Join urlTracker U
           On U.id = R.urlId
   Group By urlClicked

Если вы хотите только для указанного начального клика,

 Select urlClicked, Count(othRef.id)
 From urlReferrer R 
       Join (urlTracker U Join urlReferrer othRef
                  On othRef.urlId = U.urlId)
           On U.id = R.urlId
 Where R.id = [Specified Referrer's Id]
 Group By urlClicked 

- отредактировано в правильном порядке пункта Where

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