- 13, May 2024
- #1
Как этот запрос будет переписан с использованием JOIN?
Есть как минимум 4 таблицы, вот такие:
1. Таблица сообщений
pid, статистика, заголовок и т. д. и т. п.
2. Таблица тегов
идентификатор, pid, тег
3. Таблица профилей
идентификатор профиля, имя пользователя и т. д. и т. п.
4. Таблица рейтингов
идентификатор, pid, идентификатор профиля и т. д. и т. п.
В настоящее время использую:
выбрать что-то что-то
из сообщенийТаблица как p, Таблица профилей как pr, Таблица рейтингов как r, Таблица тегов как t
где
p.stat='y' и
t.pid = p.pid и
r.pid = p.pid и
pr.profileID = r.profileID
«что-то что-то» — это столбцы из ProfilesTable, PostsTable и TagsTable.
Я надеялся сделать это с помощью оператора соединения, примерно так:
выбрать что-то что-то
из сообщенийТаблица как p
левые теги объединенияТаблица как т
на t.pid = p.pid
left присоединиться к рейтингамТаблица как r
на r.pid = p.pid
(здесь я потерялся)
Понятия не имею, как связать таблицу рейтингов с таблицей профилей здесь...
На этом этапе мне нужно выбрать имя пользователя в таблице профилей, используя идентификатор профиля, указанный в таблице рейтингов.
Я хочу избежать создания новой таблицы, соединяющей postTable с ProfilesTable только для этой цели...
Идентификатор профиля уже есть в таблице рейтингов, я уже читаю таблицу рейтингов.
Поэтому я не хочу создавать новую соединительную таблицу только для идентификатора профиля и pid и также читать ее...
Спасибо
4. Таблица рейтингов
идентификатор, pid, идентификатор профиля и т. д. и т. п.
В настоящее время использую:
выбрать что-то что-то
из сообщенийТаблица как p, Таблица профилей как pr, Таблица рейтингов как r, Таблица тегов как t
где
p.stat='y' и
t.pid = p.pid и
r.pid = p.pid и
pr.profileID = r.profileID
«что-то что-то» — это столбцы из ProfilesTable, PostsTable и TagsTable.
Я надеялся сделать это с помощью оператора соединения, примерно так:
выбрать что-то что-то
из сообщенийТаблица как p
левые теги объединенияТаблица как т
на t.pid = p.pid
left присоединиться к рейтингамТаблица как r
на r.pid = p.pid
(здесь я потерялся)
Понятия не имею, как связать таблицу рейтингов с таблицей профилей здесь...
На этом этапе мне нужно выбрать имя пользователя в таблице профилей, используя идентификатор профиля, указанный в таблице рейтингов.
Я хочу избежать создания новой таблицы, соединяющей postTable с ProfilesTable только для этой цели...
Идентификатор профиля уже есть в таблице рейтингов, я уже читаю таблицу рейтингов.
Поэтому я не хочу создавать новую соединительную таблицу только для идентификатора профиля и pid и также читать ее...
Спасибо