У меня есть 3 очень простых таблицы, users
, projects
и starred_projects
.
starred_projects
соединяет две другие таблицы, имея идентификатор пользователя и идентификатор проекта.
CREATE TABLE projects
(
project_id integer,
name character varying(50) COLLATE pg_catalog."default",
creator_id integer,
)
CREATE TABLE users
(
user_id integer,
username character varying(64) COLLATE pg_catalog."default" NOT NULL,
)
CREATE TABLE starred_projects
(
user_id integer NOT NULL,
project_id integer NOT NULL
)
Для данного пользователя (например, «foo») я хотел бы отображать все проекты, которые он starred
. Здесь INNER JOIN
- правильный путь к go? Когда я это делаю, мой результат всегда пустой. Насколько я помню из университета, мне понадобилось бы их два, например:
SELECT
p.name, u.username // display the name of the project and the user who created it
FROM
projects p
INNER JOIN
starred s
ON
p.creator_id = s.user_id
INNER JOIN
users u
ON
u.user_id = p.creator_id
WHERE
u.username = 'foo'; // display all starred projects of user foo
Может ли кто-нибудь мне в этом помочь?