So I have received this error: #1066 - Not unique table/alias: 'Purchase'
I am trying to do the following:
SELECT Blank.BlankTypeCode
,Blank.BlankCode
,Payment.Amount
,Payment.Type
,Purchase.PurchaseDate
,Payment.DatePaid
FROM Blank
INNER JOIN Ticket
ON Blank.BlankCode = Ticket.Blank_BlankCode
INNER JOIN MCO_Blank
ON Blank.BlankCode = MCO_Blank.Blank_BlankCode
INNER JOIN Purchase
ON Ticket.PurchaseID = Purchase.PurchaseID
INNER JOIN Purchase
ON MCO_Blank.PurchaseID = Purchase.PurchaseID
INNER JOIN Payment
ON Ticket.PurchaseID = Payment.PurchaseID
INNER JOIN Payment
ON MCO_Blank.PurchaseID = Payment.PurchaseID
WHERE Payment.Status = "Paid";
Blank Table consists of:
BlankCode,
IssueDate,
Status,
UserID,
BlankTypeCode
Payment Table consists of:
Type,
Amount,
Status,
DueDate,
PurchaseID,
CurrencyRateDate
Purchase Table consists of:
PurchaseID,
CustomerID,
PurchaseDate,
TotalFare,
TaxAmount,
CurrencyType,
Purchasecol
Ticket Table consists of:
Price,
PurchaseID,
Blank_BlankCode,
Blank_BlankTypeCode,
TicketType,
Airline_Name
MCO_Blank Table consists of:
Service,
Cost,
Description,
Purchase_PurchaseID,
Blank_BlankCode,
Blank_BlankTypeCode
I am unsure of how I can make this work.
You can't join a table more than once using the same name, so either join it with an alias like
inner join purchase p1 on...
or use both of the join predicates together likeinner join purchase ON first predicate AND second predicate
You have joined Payments table twice, If you do need to join it twice you need to Alias it , a different alias everytime you join this table.
You need a different alias for the table each time you use it.
You'll need to sort out which versions of the Purchase and Payment tables the selected columns come from, and also what should be in the WHERE clause really.
You need to use table aliases. You have mentioned the same table more than once in the
from
clause. The query is something like this:I had to make a guess at which payment and purchase is intended for the aliases. These may not be correct in the
from
andwhere
clauses.SELECT bl.BlankTypeCode ,bl.BlankCode ,pymt.Amount ,pymt.Type ,purc.PurchaseDate ,pymt.DatePaid FROM Blank bl INNER JOIN Ticket tk ON bl.BlankCode = tk.Blank_BlankCode INNER JOIN MCO_Blank mco_bl ON bl.BlankCode = mco_bl.Blank_BlankCode INNER JOIN Purchase purc ON tk.PurchaseID = purc.PurchaseID AND mco_bl.PurchaseID = purc.PurchaseID INNER JOIN Payment pymt ON tk.PurchaseID = pymt.PurchaseID AND mco_bl.PurchaseID = pymt.PurchaseID WHERE pymt.Status = "Paid";