-1

我试图在 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`
4

2 回答 2

1

您正在尝试在实际使用之前引用SalesInvoice您的表格- 因此它不存在。您只需要更改连接的顺序:joinjoin

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 
于 2016-04-13T05:24:05.530 回答
0

简化为运行查询如下

选择 c.*、d.*、dor.*、si.*
    来自甜甜圈 d
    左外 JOIN DonutOrder dor ON dor.DonutID = d.DonutID
    左外 JOIN SalesInvoice si ON si.DonutOrderID = si.DonutOrderID
    c.CustomerID = si.CustomerID 上的左外 JOIN Customer c
于 2016-04-13T05:33:13.473 回答