Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 复杂联接查询给出错误_Mysql_Sql_Join_Sqlfiddle - Fatal编程技术网

Mysql 复杂联接查询给出错误

Mysql 复杂联接查询给出错误,mysql,sql,join,sqlfiddle,Mysql,Sql,Join,Sqlfiddle,我试图在SQLFiddle上运行一个复杂的连接查询,但不断出现错误。想要打印select语句上的所有主要属性。在过去的几天里被卡住了。伸出援助之手将不胜感激 `CREATE TABLE Customer` `(CustomerID INT(255) NOT NULL AUTO_INCREMENT,` `FirstName VARCHAR(255) NOT NULL,` `LastName VARCHAR(255) NOT NULL,` `StreetAddress VARCHAR(255) NO

我试图在SQLFiddle上运行一个复杂的连接查询,但不断出现错误。想要打印select语句上的所有主要属性。在过去的几天里被卡住了。伸出援助之手将不胜感激

`CREATE TABLE Customer`
`(CustomerID INT(255) NOT NULL AUTO_INCREMENT,`
`FirstName VARCHAR(255) NOT NULL,`
`LastName VARCHAR(255) NOT NULL,`
`StreetAddress VARCHAR(255) NOT NULL,`
`Apartment VARCHAR(255) NOT NULL,`
`City VARCHAR(255) NOT NULL,`
`State VARCHAR(2) NOT NULL,`
`ZipCode CHAR(9) NOT NULL,`
`HomePhone CHAR(10) NOT NULL,`
`MobilePhone CHAR(10) NOT NULL,`
`OtherPhone CHAR(10) NOT NULL,`
`PRIMARY KEY (CustomerID));`
`INSERT INTO Customer `
`(FirstName, LastName, StreetAddress, Apartment, City, State,`
`ZipCode, HomePhone, MobilePhone, OtherPhone)`
`VALUES ('Max', 'Karl', '101 Main', ' ABC ', 'ABC', `
`'TX', 77077, 12345, 987654, 963258);`
`SELECT CustomerID, (CONCAT (firstname, ' ', Lastname)) as FullName,` `StreetAddress, Apartment, City, State, ZipCode, Homephone, `mobilephone,`otherphone FROM customer;`

`CREATE TABLE Donut`
`(DonutID INT(255) NOT NULL AUTO_INCREMENT,`
`Name VARCHAR(255) NOT NULL,`
`Description VARCHAR(255) NOT NULL,`
`UnitPrice DECIMAL(3,2) NOT NULL,`
`PRIMARY KEY (DonutID));`
`INSERT INTO Donut (Name, Description, UnitPrice)`
`VALUES ('Plain', 'Plain Donut', '1.50'),`
`('Glazed', 'Glazed Donut', '1.75'),`
`('Cinnamon', 'Cinnamon Donut', '1.75'),`
`('Chocolate', 'Chocolate Donut', '1.75'),`
`('Sprinkle', 'Sprinkle Donut', '1.75'),`
`('Gluten-Free', 'Gluten-Free Donut', '2.00');`
`CREATE INDEX DonutName ON Donut (Name);`

`CREATE TABLE DonutOrder`
`(DonutOrderID INT (255) NOT NULL AUTO_INCREMENT,`
`DonutID INT(255) NOT NULL,`
`Quantity INT(255),`
`PRIMARY KEY (DonutOrderID, donutID),`
`FOREIGN KEY (donutID) REFERENCES Donut(donutID),`
`INDEX Donut(donutID));`
`INSERT INTO DonutOrder (DonutID, Quantity)`
`VALUES ((SELECT DonutID FROM Donut WHERE DonutID = 1), 1),`
  ` ((SELECT DonutID FROM Donut WHERE DonutID = 2), 5),`
  ` ((SELECT DonutID FROM Donut WHERE DonutID = 3), 12),`
   `((SELECT DonutID FROM Donut WHERE DonutID = 4), 3),`
   `((SELECT DonutID FROM Donut WHERE DonutID = 5), 4),`
  ` ((SELECT DonutID FROM Donut WHERE DonutID =6), 5);`

`CREATE TABLE SalesInvoice`
`(CustomerID INT(255) NOT NULL,`
`DonutOrderID INT(255) NOT NULL AUTO_INCREMENT,`
`Date date NOT NULL,`
`Spec_Hnd_Inst VARCHAR(255),`
`PRIMARY KEY (DonutOrderID),`
`INDEX Customer (CustomerID),`
`FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID),`
`INDEX DonutOrder (donutOrderID));`

`SELECT Customer.CustomerID, FirstName, LastName, StreetAddress, Apartment, City, `
`State, ZipCode, HomePhone, MobilePhone, OtherPhone, Donut.DonutID, Name,`
`Description, UnitPrice, DonutOrder.DonutOrderID, DonutOrder.DonutID, `
`Quantity, SalesInvoice.DonutOrderID, SalesInvoice.CustomerID`
`FROM donut JOIN Customer ON SalesInvoice.CustomerID = Customer.CustomerID`
`JOIN DonutOrder ON Donut.DonutID = DonutOrder.DonutID`
`JOIN SalesInvoice ON DonutOrder.DonutID = SalesInvoice.DonutOrderID`

在实际加入之前,您试图在加入中引用SalesInvoice表,因此它不存在。您只需更改联接的顺序:

SELECT Customer.CustomerID, FirstName, LastName, StreetAddress, 
      Apartment, City, State, 
      ZipCode, HomePhone, MobilePhone, 
      OtherPhone, Donut.DonutID, Name, Description, 
      UnitPrice, DonutOrder.DonutOrderID, DonutOrder.DonutID, 
      Quantity, SalesInvoice.DonutOrderID, 
      SalesInvoice.CustomerID 
FROM donut 
  JOIN DonutOrder ON Donut.DonutID = DonutOrder.DonutID 
  JOIN SalesInvoice ON DonutOrder.DonutID = SalesInvoice.DonutOrderID
  JOIN Customer ON SalesInvoice.CustomerID = Customer.CustomerID 

简化为运行查询,如下所示

SELECT c.*, d.*, dor.*, si.* FROM donut d left outer JOIN DonutOrder dor ON dor.DonutID = d.DonutID left outer JOIN SalesInvoice si ON si.DonutOrderID = si.DonutOrderID left outer JOIN Customer c on c.CustomerID = si.CustomerID
错误是什么?如果您尝试使用SQLFiddle,那么上传该链接也会得到上一篇文章的回复。谢谢大家。