2009-09-12 43 views
2

我正在學習mysql,一直試圖讓這個工作,但無論我怎麼嘗試都會出現錯誤 - 或者它只是不顯示錶中的任何內容。獲取來自三個不同表格的所有值..加入問題?

我有3個表,都具有相同的金額列

我想標題

表以字母順序列出所有值的列和名稱:通用 - 溫度 - 位置

列:id - url - title - description

你會如何編寫select語句?

我已經嘗試了多種方式,不能圖出來......我猜它會看起來像

SELECT * FROM General JOIN Temp ON General.title = Temp.title JOIN Location ON Temp.title = General.title 

我與變化像Temp.title =總價值發揮各地廣泛.title和似乎沒有幫助

任何想法?

謝謝!

P.S - 我也嘗試這樣做,它給出的數據,但只顯示一般的表幾結果與臨時職位的量..非常混亂

SELECT 
    General.id, 
    General.url, 
    General.title, 
    General.description, 
    Temp.id, 
    Temp.url, 
    Temp.title, 
    Temp.description, 
    Location.id, 
    Location.url, 
    Location.title, 
    Location.description 
FROM 
    General INNER JOIN Temp 
    ON General.id = Temp.id 
    INNER JOIN Location 
    ON Temp.id = Location.id 
ORDER BY 
    General.title 

回答

4
(SELECT id, url, title, description FROM General) 
UNION 
(SELECT id, url, title, description FROM Temp) 
UNION 
(SELECT id, url, title, description FROM Location) 
ORDER BY Title 

MySQL的Reference

+1

謝謝!有沒有一種方法可以在添加具有額外列的表時使用此語法? – krx 2009-09-12 02:12:05

+0

非常有幫助謝謝! – krx 2009-09-12 02:17:03

+1

@krio:當然。只需在該列位置中包含一個「虛擬」值,以便其他沒有該列的查詢 – 2009-09-12 02:19:01

1

要添加一個表,一個額外的列:

SELECT NULL 'id', 
     NULL 'url', 
     NULL 'title', 
     NULL 'description', 
     NULL 'extra_column' 
    FROM DUAL 
UNION 
SELECT g.id, 
     g.url, 
     g.title, 
     g.description, 
     NULL 
    FROM GENERAL g 
UNION 
SELECT t.id, 
     t.url, 
     t.title, 
     t.description, 
     NULL 
    FROM TEMP t 
UNION 
SELECT l.id, 
     l.url, 
     l.title, 
     l.description, 
     NULL 
    FROM LOCATION l 
ORDER BY title 

這是假設你希望所有的額外表中的列。如果您不這樣做,請不要包含額外的列,但要確保數據類型與SELECT語句中的位置匹配。

+0

謝謝!這個答案也幫助我更好地理解如何在sql中進行選擇 – krx 2009-09-12 03:32:15

相關問題