我有一个具有2种类型的用户的数据库,用户可以是individual或organization是父级用户user的子级,我这样做的原因是因为组织具有一个属性,该属性具有没有,不像有一个表可以定义两个用户的所有属性,而必须有一个空字段,我决定创建一个individual表,该表在两种类型的用户之间具有相同的属性,然后有一个保持用户类型的列,因此,如果其user表示用户是个人,那么我必须在1表中查找所有其他属性,反之亦然,individual和individual表包含在此处进行标识是我的数据库表的图形表示如果您想知道为什么我不创建一个表,我计划随着应用程序的增长为用户表和组织表添加更多属性,为扩展留出空间,所以这是我的问题,我想获取用户数据,我已经有他们的ID,但是如何检查userType并指向右表以获取下一组属性,例如,如果一个名叫John的用户的ID为2,并且在单个表中,该如何获取他们的第一个和姓?我对查询的想法是:Select users.email, users.profilePhoto, users.userSince, CASE WHEN userType = 1 THEN SELECT individual.fname, individual.lname WHERE users.id = 1 AND individual.userFK = 1 END FROM users但是我不熟悉organization语句,所以我总是会出错,任何想要帮助的人,我们都非常欢迎。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您试图在SELECT部分中构建数据集,但是SELECT部分仅用于更改输出,而不是输入,也不用于构建数据集。使用WHERE语句结合使用JOIN的交叉选择构建数据集。可以使用GROUP BY进行聚合,但是现在您不需要。 SELECT u.*, i.*, o.* FROM users uLEFT JOIN individual i ON i.userFK = u.userFKLEFT JOIN organization o ON o.userFK = u.userFK (adsbygoogle = window.adsbygoogle || []).push({});
10-08 11:11