簡體   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