繁体   English   中英

内部连接在mysql中给出错误代码1052

[英]inner join gives in mysql gives error code 1052

我用以下表格创建了一个数据库:

        CREATE SCHEMA IF NOT EXISTS `facturatiedatabase` ;
        USE `facturatiedatabase` ;

        DROP TABLE IF EXISTS tblAddress ;
        DROP TABLE IF EXISTS tblContact ;
        DROP TABLE IF EXISTS tblCustomers ;

        CREATE TABLE tblCustomers  (
        customerID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        firstname VARCHAR(30) NOT NULL,
        lastname VARCHAR(30) NOT NULL,
        vat VARCHAR(30) NOT NULL,
        customerVisible varchar(1) NOT NULL DEFAULT 'T'
        ) ENGINE=InnoDB;


        CREATE TABLE tblContact (
        contactID INT NOT NULL  AUTO_INCREMENT PRIMARY KEY,
        email VARCHAR(100),
        phone VARCHAR(100),
        customerID int,
        CONSTRAINT FK_customerID_Contact FOREIGN KEY (customerID) REFERENCES tblCustomers(customerID) 
        ) ENGINE=InnoDB;

        CREATE TABLE tblAddress (
        addressID INT NOT NULL  AUTO_INCREMENT PRIMARY KEY,
        street VARCHAR(100),
        houseNumber VARCHAR(15),
        city VARCHAR (100),
        country VARCHAR (100),
        customerID int,
        CONSTRAINT FK_customerID_Adress FOREIGN KEY (customerID) REFERENCES tblCustomers(customerID)
        ) ENGINE=InnoDB;


        INSERT INTO tblCustomers (firstname, lastname,vat) 
        VALUES ("John","Doe","UV45856855");

        INSERT INTO tblContact (customerID,phone, email) 
        VALUES ((SELECT DISTINCT LAST_INSERT_ID() FROM tblCustomers), "0000001","Johndoe@gmail.com");

        INSERT INTO tblAddress (customerID,street,housenumber,city,country) 
        VALUES ((SELECT DISTINCT LAST_INSERT_ID() FROM tblCustomers), "berkenlaan","1a","Harelbeke","Belgie");

但是,当我尝试遵循内部联接时,它给了我以下错误:LIMIT 0,1000错误代码:1052。字段列表中的“ customerID”列模棱两可0.000秒。

        SELECT customerID, firstname, lastname, vat,email
        FROM tblCustomers
        INNER JOIN tblContact on tblCustomers.customerID = tblContact.contactID

错误消息说明了一切: 两个表中包含列名customerID 那么mysql应该选择哪个值? 那是模棱两可的,因此是错误的。

试试这个变体:

SELECT tblCustomers.customerID AS customerID, firstname, lastname, vat,email
    FROM tblCustomers
    INNER JOIN tblContact on tblCustomers.customerID = tblContact.contactID

(或者,如果需要的话,选择与其他表相同的列...)

而且,坦率地说,我怀疑您的ON子句是您要使用的子句。 那不是应该ON tblCustomers.customerID = tblContact.customerID吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM