Вопрос о внутреннем соединении MySQL

У меня есть две таблицы в базе данных 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 часов, и я никуда не денусь, я не эксперт по базам данных, кто-нибудь может объяснить, как этого добиться.

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

Какой идентификатор в таблице urlTracker? UrlId? А какой идентификатор в таблице urlReferrer? Идентификатор реферера?

Charles Bretana 19.12.2008 19:51

Я добавил некоторый язык определения данных SQL, чтобы более наглядно проиллюстрировать ваши таблицы.

Bill Karwin 28.12.2008 23:36
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
345
2

Ответы 2

если вы хотите, чтобы это было для всех 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.

Bill Karwin 28.12.2008 23:40

Я думаю :

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

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

Другие вопросы по теме