2017-06-22 128 views
-1

我尝试从两个表中选择数据。
在第一个表中,我用默认语言存储一些内容。
第一个表中包含的数据的第二个表存储的翻译。

我想检索特定语言的行。

例如:
id,content,id_language,content_translation。从具有多个参数的两个表中选择数据

我,已经做出这样的查询:

SELECT content_static.*, 
content_static_t.* 
FROM content_static 
LEFT JOIN content_static_t on content_static_t.parent_id = content_static.id 
WHERE content_static.id = 1; 

它工作正常,但是当我有2种语言它显示两行,分别为每种语言。

我想只显示一行,只针对一种语言。
我也想知道只有在SQL查询中才有可能从表content_static中获取多个ID的数据。

http://sqlfiddle.com/#!9/fa076/2

我添加到查询添加条件(AND content_static_t.language_id = '2')。当我将参数设置为'2'时没问题,但是当我将它设置为'4'时,我没有收到任何数据。 在这种情况下,我只能显示表content_static中的数据。

+4

你想显示哪种语言?提供样本数据和期望的结果。 –

+0

使用不同的子句 –

+2

您可能正在寻找'group_concat()' – Rahul

回答

-1

如果使用在WHERE语句中的主键则非常简单,只需使用TOP 1

SELECT TOP 1 content_static.*, content_static_t.* 
FROM content_static 
LEFT JOIN content_static_t on content_static_t.parent_id = content_static.id 
WHERE content_static.id = 1; 
-1

你只需福尔戈添加的条件语言:

SELECT cs.*, cst.* 
FROM content_static cs 
LEFT JOIN content_static_t cst on cst.parent_id = cs.id AND cst.language_id = 4 
WHERE cs.id = 1; 

如果您需要更多ID,请更改或删除WHERE子句。

+0

请低估这个人请告诉我为什么? –