SQL (phpMyAdmin) ON 语句中的意外点

SQL (phpMyAdmin) unexpected dot in ON statement

我在我的数据库中创建了一个名为“people”的视图,它使用名为“isUserVerified”、“hasUserPicture' 和 'userHobbies' 来自两个 table 叫做 'users' 和 'user_hobbies':

SELECT 
    `people`.`users`.`id` AS `id`,
    `isUserVerified`(`people`.`users`.`id`) AS `verification`,
    `hasUserPicture`(`people`.`users`.`id`) AS `profile_picture`,
    `userHobbies`(`people`.`user_hobbies`.`user_id`) AS `hobbies` 
FROM 
    (`people`.`users` INNER JOIN `people`.`user_hobbies`) 
ON 
    `people`.`user_hobbies`.`user_id` = `people`.`user_hobbies`.`user_id` 
WHERE 
    `people`.`user_hobbies`.`user_id` = `people`.`user_hobbies`.`user_id` 

phpMyAdmin 抱怨一个意外的点(以下行中的最后一个点(user_id 之前):

ON 
    `people`.`user_hobbies`.`user_id` =

以及上面同一行中 = 之前的意外标记。考虑到我的视图使用连接到相关 table 的函数,JOIN 是否是从两个 table 检索数据的正确方法?如果是,谁能告诉我我的 SQL 出了什么问题。 谢谢

您的语法不正确; FROM 子句不应括在括号中。此外,您的 JOIN 条件可能应该是

`people`.`user_hobbies`.`user_id` = `people`.`users`.`id`

并且您的 WHERE 条件是多余的,因为它与 JOIN 条件相同。试试这个(请注意,我为 table 名称添加了别名以简化查询):

SELECT 
    `u`.`id` AS `id`,
    `isUserVerified`(`u`.`id`) AS `verification`,
    `hasUserPicture`(`u`) AS `profile_picture`,
    `userHobbies`(`h`.`user_id`) AS `hobbies` 
FROM 
    `people`.`users` u
INNER JOIN
    `people`.`user_hobbies` h
ON 
    `h`.`user_id` = `u`.`id`