2012-11-11 45 views
3

我學習一些SQL,並且碰到了一個「問題」,MySQL的選擇與報表

我有兩個tabels像下面 http://www.sqlfiddle.com/#!2/403d4/1

編輯鏈接: 因爲我很弱智現在所有SQL測試我做了這個週末,我問真的錯了...... 對不起球員...

我真正想要的:

如果我有要求的語言,我希望到g所有的記錄,如果請求的語言不在標題表中,我希望它說「」或空...

如果我要求所有記錄在'德',我想:

1 |  ACHTUNG 
2 | NULL 

,如果我要求在「恩」的所有記錄,我想

1 | WARNING 
2 | Ambulance 

爲錯誤的問題實在不好意思。

/* 我想要做什麼: 我有一個記錄的ID和所需的語言。 如果所選語言不存在,我希望它採用其他語言。

一樣,如果我有: 語言= '德' 和id = 1 我想 'ACHTUNG',

如果我有: 語言= '德' 和id = 2 我想要的 「救護車」因爲沒有'德'... */

我該怎麼做?

+0

聽起來像是一條IF語句給我。 – Fredrik

+0

根據您編輯的問題檢查我編輯的答案。 –

回答

1

http://www.sqlfiddle.com/#!2/403d4/89

SELECT rec.id, title.name 
FROM Records rec 
LEFT JOIN Titles title ON title.record_id = rec.id and title.language='de'; 

SELECT rec.id, title.name 
FROM Records rec 
LEFT JOIN Titles title ON title.record_id = rec.id and title.language='en'; 


ID NAME 
1 ACHTUNG 
2 (null) 

ID NAME 
1 Warning 
2 Ambulance 
0

您可以通過應用自定義的順序,只返回第一行,像這樣:

SELECT 
    rec.id, 
    title.language, 
    title.name 

FROM Records rec 

LEFT JOIN Titles title 
ON title.record_id = rec.id 

WHERE rec.id = 1 
ORDER BY Field(title.language, "de") DESC 
LIMIT 1 

此查詢首先返回與所需的語言記錄,如果存在。如果不是,它只會返回找到的內容。你可能想看看at this answer