首页 > 解决方案 > 表无法正确连接

问题描述

我正在尝试列出所有 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;

我的加入:

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" 在此处输入图像描述

标签: sqloraclejoin

解决方案


根据您发布的实体关系(ER)图,您需要连接四个表,即UserAppUser和。AppAppCategory

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'

推荐阅读