2014-12-03 35 views
0

以下查詢出了什麼問題。它不工作,我基本上需要它做一個完整的聯接,並返回所有的字段,無論是否匹配。mysql全連接查詢

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

1.它不是一個SQL查詢,它是PHP代碼的一部分be here' {$ where}')。 2.請定義*不工作* – sectus 2014-12-03 02:12:43

+5

我不能說我聽說過一個完整的* inner *連接。你的意思是使用完整的* OUTER *加入嗎?我也有5塊錢投注,你可能意思是使用'LEFT JOIN'。 – 2014-12-03 02:14:19

+0

只是想說同樣的話。只是在動態組成語法,並想知道爲什麼它不起作用? :) – 2014-12-03 02:17:01

回答

0

AFAIK,有沒有這樣的事情作爲FULL INNER JOIN。它可能會回落到常規的INNER JOIN或者完全做其他事情。

我想你正在尋找OUTER型連接。我會開始將這些更改爲LEFT JOIN以查看是否返回您正在查找的結果。

如果沒有,並且確實需要FULL OUTER JOIN,那麼請參閱Full Outer Join in MySQL以獲取有關如何在MySQL中實現一個示例的示例。

+0

即使完整的外連接也不會返回任何內容 – kharkuSINGH 2014-12-03 02:21:53

+0

如何執行查詢?什麼是'$ where'?如果你「沒有」,你可能需要提供更多的上下文。請修改您的問題以包含更多代碼。檢查最後的查詢(在字符串評估之後)或在PHP中啓用錯誤處理可能也有幫助。 – 2014-12-03 02:23:06

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 . . . 

要指定別名FULLtbl_tickets - 絕對不是你的意圖。

0

您需要做一個左連接它返回第一個表的所有記錄是否存在匹配或不存在。 如果你想做一個完整的外連接喲需要做一個左連接 - 工會 - 正確的連接,因爲沒有完整的外連接在MySQL