У меня есть две таблицы в базе данных MySQL
urltracker с идентификатором столбца и щелчком по URL и urlreferrer с идентификатором столбца, 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-адрес, по которому щелкнули, просмотрев таблицу urlclicked, и общее количество рефереров из таблицы urlreferrer для этого конкретного URL-адреса.
Я возился с этим в течение 2 часов, и я никуда не денусь, я не эксперт по базам данных, кто-нибудь может объяснить, как этого добиться.
заранее спасибо
Я добавил некоторый язык определения данных SQL, чтобы более наглядно проиллюстрировать ваши таблицы.






если вы хотите, чтобы это было для всех 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
Хорошо, за исключением того, что WHERE должен стоять перед GROUP BY.
Я думаю :
SELECT ut.urlclicked, COUNT(ur.id)
FROM urltracker ut JOIN urlreferrer ur ON (ut.id = ur.url_id)
GROUP BY ut.urlclicked
должен это сделать.
Какой идентификатор в таблице urlTracker? UrlId? А какой идентификатор в таблице urlReferrer? Идентификатор реферера?