以下查询出了什么问题。它不起作用,我基本上需要它来进行完全加入并返回所有字段,无论是否匹配。
SELECT tbl_tickets.ID AS Ticket_ID, tbl_tickets.Ticket_Number, tbl_tickets.Ticket_Category, tbl_orders.PO_Number, tbl_invoice_to.Name AS Dealer_Name
FROM tbl_tickets
FULL INNER JOIN tbl_orders ON tbl_tickets.Order_ID=tbl_orders.ID
FULL INNER JOIN tbl_invoice_to ON tbl_tickets.Invoice_To=tbl_invoice_to.ID
WHERE Ticket_Type='PARENT' AND {$where}
ORDER BY tbl_tickets.Ticket_Category
答案 0 :(得分:0)
AFAIK,没有FULL INNER JOIN
这样的东西。它可能会回归常规INNER JOIN
或完全做其他事情。
我认为您正在寻找OUTER
类型的联接。我首先将这些更改为LEFT JOIN
,看看是否会返回您正在寻找的结果。
如果没有,并且您确实需要FULL OUTER JOIN
,请参阅Full Outer Join in MySQL以获取有关如何在MySQL中实现一个的示例。
答案 1 :(得分:0)
鉴于你的表名,我希望外键关系排成一行。因此,inner join
就足够了:
SELECT t.ID AS Ticket_ID, t.Ticket_Number, t.Ticket_Category, o.PO_Number, i.Name AS Dealer_Name
FROM tbl_tickets t INNER JOIN
tbl_orders o
ON t.Order_ID = o.ID INNER JOIN
tbl_invoice_to i
ON t.Invoice_To = i.ID
WHERE Ticket_Type = 'PARENT' AND {$where}
ORDER BY t.Ticket_Category
(注意我引入了表别名,这使得查询更容易编写和阅读。)
如果没有返回任何内容,则首先删除WHERE
子句中的条件。如果仍未返回任何内容,请检查连接条件。
MySQL不支持完全外连接。所以,当你写:
FROM tbl_tickets FULL INNTER JOIN
tbl_orders . . .
您将别名FULL
分配给tbl_tickets
- 绝对不是您的意图。
答案 2 :(得分:0)
你需要做一个左连接,它返回第一个表的所有记录,无论是否匹配。 如果你想做一个完整的外连接,你需要做一个左连接 - union - right join,因为MySQL里没有完全外连接