2014-06-24 90 views
1

我有2個表:MySQL的加入不相關的表

create table words(id int(3) not null primary key auto_increment, name varchar(10) not null); 
insert into words values(null, 'rock'); 
insert into words values(null, 'rick'); 
insert into words values(null, 'red'); 
insert into words values(null, 'black'); 

create table letters(id int(3) not null primary key auto_increment, name char(1) not null, lang char(2) not null); 
insert into letters values(null, 'A', 'en'); 
insert into letters values(null, 'B', 'en'); 
insert into letters values(null, 'C', 'es'); 

現在,來獲取與 'R' 開頭的話,我做的事: SELECT * FROM話,其中名稱,如 'R%';

如果我想,同時也得到所有字母與lang ='en'的列表,查詢將如何? 我已經嘗試過使用聯合,但似乎你只能將它用於具有相同列的表。 對於結果列表中的每一行,我想獲得id(從單詞),name(從單詞)和所有符合條件lang ='en'的字母的連接列表。 我想我需要使用連接,但不能真正弄清楚它會是什麼樣子。有沒有人可以給我一些幫助?

回答

0
SELECT w.id, w.name, 
     (
     SELECT GROUP_CONCAT(name ORDER BY name SEPARATOR ',') 
     FROM letters 
     WHERE lang = 'en' 
     ) 
FROM words 

請注意,該信件列表對於每條記錄都是相同的。你真的需要它在數據集?您可能需要考慮在單獨的查詢中檢索並存儲在客戶端。