【问题标题】:How to Join 3 Tables in MySQL?如何在 MySQL 中加入 3 个表?
【发布时间】:2012-01-14 00:17:21
【问题描述】:

我正在为我的数据库创建一个视图,我正在加入 3 个表,Users、personal_info 和 contact_info,如果您注意到我的 Select 语句中有很多列名,因为我不想包含主键但是我这里好像有错误,看一下

CREATE VIEW `payroll`.`new_view` AS
Select employee_id,employee_password,First_Name,Middle_Initial,
Last_Name,Date_Of_Birth,Beneficiaries,Home_Number,Address,Mobile_Number,Email_Address
From USER
LEFT JOIN personal_info on idUser = idPersonal_Info,
FULL JOIN contact_info on idUser = idContact_Info

错误是

ERROR 1146: Table 'payroll.full' doesn't exist

SQL Statement:

CREATE  OR REPLACE VIEW `payroll`.`new_view` AS

Select employee_id,employee_password,First_Name,Middle_Initial,

Last_Name,Date_Of_Birth,Beneficiaries,Home_Number,Address,Mobile_Number,Email_Address

From USER

LEFT JOIN personal_info on idUser = idPersonal_Info,

FULL JOIN contact_info on idUser = idContact_Info

【问题讨论】:

  • 可以添加每张表的结构吗?因为很难找出哪些列属于哪些表。
  • MySQL 中没有FULL JOIN。您必须使用 UNION 的 LEFT 和 RIGHT 连接来模拟它。
  • 你还有一个没有意义的逗号,后面是:LEFT JOIN personal_info on idUser = idPersonal_Info,

标签: mysql database join left-join


【解决方案1】:

错误:

在 idUser = idPersonal_Info 上左加入个人信息

你需要指定哪个表的哪一列等于另一表的哪一列,比如

  SELECT a,b,c from table1 
  LEFT JOIN table2
   on table1.a= table2.columnY

在你的情况下:

on USER.idUser =  Personal_Info.idPersonalInfo

第三次加入也是如此

另一件事是行尾的逗号:

在 idUser = idPersonal_Info ,

上左加入个人信息

它不属于那里。

【讨论】:

  • 如果没有冲突,则不需要。但这是一个很好的建议,为了清晰和维护。
【解决方案2】:

用反引号引用它:payroll.new_view

CREATE VIEW `payroll.new_view`  

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多