【发布时间】:2020-09-10 05:19:52
【问题描述】:
我无法理解 JOIN 和多对多数据库关系。
我有 3 个表(结构已简化)
用户:
id (primary) | userEmail | userName | userAddress | userCreated
团队:
id (primary) | teamName | teamLogo | teamCreated
团队用户
id (primary) | userId | teamId | userLevel
团队可以有很多用户。并且用户可以在许多团队中。 UsersTeams 表跟踪哪些用户在哪些团队中(注意:我没有使用外键或任何东西)。
当用户登录时,我想获取他们所属的所有团队的列表以及相应的数据,即
- 从 USERS 获取数据(其中 id = $id)
- 在 TEAMS-USERS 中查找
- 通过 TEAMS-USERS 中的 teamID 从 TEAMS 获取团队信息
- 全部存储在一个数组中
到目前为止,我有这段代码,但老实说,我只是在尝试很多变体:
$model->select('users.*, teams.*, teams.id as teamId, teams-users.id as teamsUsersId, teams-users.userId as teamsUsersUserId, teams-users.teamId as teamsUsersTeamId');
$model->where("users.id", $id);
$model->join('teams-users','teams.id = teams-users.teamId','inner');
$data = $model->get()->getRowArray();
运行上面的查询给了我错误:Unknown table 'myproject.teams' - 即使 TEAMS 表 100% 存在并且我在整个项目中都使用它。
我哪里错了?
【问题讨论】:
-
你加入同一个表两次......每个都需要自己的唯一别名,否则数据库无法区分它们......
标签: php sql codeigniter