Таблицы не будут правильно соединяться - PullRequest
0 голосов
/ 22 декабря 2019

Я пытаюсь перечислить всех пользователей старше 13 лет, которые скачали приложение в категории «Социальные сети». С учетом даты рождения пользователей в порядке возрастания.

Я не могу понять, что не так с моим объединением и как я должен объединять эти таблицы вместе в SQL.

Код ниже:

SELECT DISTINCT
u."UserId",
CAST(u."Username" AS varchar2(20)) AS "Username",
CAST(u."FirstName" AS varchar2(15)) AS "FirstName",
CAST(u."LastName" AS varchar2(15)) AS "LastName",
CAST(u."Email" AS varchar2(30)) AS "Email",
u."Gender",
u."JoinDate",
TRUNC(u."DateOfBirth") AS "DateOfBirth",
u."CountryId"
FROM BR_USER u JOIN BR_APPUSER ap ON u."UserId" = ap."UserId", BR_APPUSER ap JOIN BR_APPCATEGORY ac ON ap."AppId" = ac."AppId"
WHERE months_between(TRUNC(sysdate), u."DateOfBirth") / 12 > 13 AND ac."CategoryName" = 'Social'
ORDER BY "DateOfBirth" ASC;

My Join:

FROM 
BR_USER u JOIN BR_APPUSER ap ON u."UserId" = ap."UserId", 
BR_APPUSER ap JOIN BR_APPCATEGORY ac ON ap."AppId" = ac."AppId"

Я пытаюсь перечислить только пользователей, которые имеют CategoryName = "Social" enter image description here

1 Ответ

1 голос
/ 22 декабря 2019

В соответствии с опубликованной вами диаграммой Entity-Relationship (ER) вам необходимо объединить четыре таблицы, а именно: User, AppUser, App и AppCategory.

select U.username
from
  User U
inner join
  AppUser AU
on
  U.userid = AU.userid
inner join
  APP A
on
  AU.appid = A.appid
inner join
  AppCategory AC
on
  AC.appCategoryId = A.appCategoryId
where
  AC.categoryName = 'Social'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...