2013-10-01 21 views
6

Czy można dołączyć do wyniku z UNION z dwóch tabel z 3. tabeli? Coś takiego:MySQL DOŁĄCZ do wyniku UNION

(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361) a 
LEFT JOIN `qt1` 
ON `qt1`.`Fund ID` = a.`Fund_ID` 

ale ten kod nie działa. Mogłem przenieść JOIN wewnątrz każdego zapytania SELECT przed UNION, ale wolałbym próbować uzyskać JOIN z wynikiem UNION.

Jak mogę to naprawić?

Odpowiedz

6

Tak, jest to możliwe. Jednak Twój kod jest niepoprawny, ponieważ brakuje Ci samej instrukcji, ponieważ pierwszy wybrany zestaw staje się zestawem wierszy (tabela tworzona przez środowisko wykonawcze). To znaczy. musisz podać operator SELECT i pola, które chcesz otrzymać. Najprostszy przypadek:

SELECT 
    a.* 
FROM 
    (SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
    SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361) AS a 
    LEFT JOIN `qt1` 
    ON `qt1`.`Fund ID` = a.`Fund_ID` 
2
SELECT * FROM 
(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361) a 
LEFT JOIN `qt1` 
ON `qt1`.`Fund ID` = a.`Fund_ID`;