문제

I have a table with text in various language. Its defined like this:

Id|Language|Text

EXAMPLE DATA

0, ENU, a
0, DAN, b
1, ENU, c
2, ENU, d
2, DAN, e
3, ESP, f
3, ENU, g

Language and Id form the key.

Now I want to extract all texts in a langauge (lets say english) and have the coorosponding text in another language (lets say danish) shown in the column next to. So the result should be:

0, a, b
1, c, 
2, d, e
3, g

I know I can do a join like this:

SELECT t1.Id, t1.Text AS "ENU", t2.Text AS "DAN" table as t1 
JOIN table as t2 ON (t1.Id= t2.Id) 
WHERE t1.Langauge = "ENU" AND t2.Language = "DAN";

But this does not include the missing rows (ie row id=1 and id=3). How to do this?

* UPDATE **** I get suggestion to use LEFT JOIN but I cant get it working. Maybe because my table layout is a bit different than in the simplified question above. My table is defined as this:

Language|MPageId|MFieldId|MParagraph|MText

Where Language,MPageId,MFieldId,MParagraph forms the key

I tried this:

SELECT t1.MPageId, t1.MFieldId, t1.MParagraphId, t1.MText, t2.MText FROM main as t1 LEFT JOIN main as t2 ON (t1.MPageId = t2.MPageId AND t1.MFieldId = t2.MFieldId AND t1.MParagraphId = t2.MParagraphId) WHERE t1.MLanguage = 'ENU' AND t2.MLanguage = 'DAN'

도움이 되었습니까?

해결책

SELECT t1.Id, t1.Text AS "ENU", t2.Text AS "DAN" FROM table as t1 
LEFT JOIN table as t2 ON (t1.Id= t2.Id AND t2.Language = "DAN")
WHERE t1.Langauge = "ENU"

다른 팁

You do need the left join... but the "AND" clause for "DAN"ish would be applied AT the LEFT JOIN, and not in the WHERE clause... The where clause implies an INNER JOIN

SELECT 
      t1.Id, 
      t1.Text AS "ENU", 
      t2.Text AS "DAN" 
   from
      YourTable t1
         LEFT JOIN YourTable t2 
            ON t1.Id= t2.Id
           AND t2.Language = "DAN"
   where
      t1.Langauge = "ENU"
select Id,
MAX(case when LanguageS='ENU' then Text  else null end  ) as A,
MAX( case when LanguageS<>'ENU' then Text  else null end ) as B
from LAN
GROUP BY 1

Id      A           B
0       a           b
1       c           ?
2       d           e
3       g           f
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top