Frage

Ich habe eine MS Access-Datenbank, die in der Quelle-Ziel-Paaren übersetzten Sätze enthält (ein Translation Memory für mitbenutzen von CAT-Tools). Etwas störend, Quelle und Ziel sind in separaten Spalten nicht gespeichert, sondern wie diese in Reihen von ID verknüpft:

+---+----+--------------+
|id |lang|    text      |
+---+----+--------------+
  1   a     lang a text
  1   b     lang b text 
  2   a     more a text...
  2   b     more b text...
+---+----+--------------+

Was SQL könnte ich das in eine Tabelle zu machen, wie:

+---+--------------+--------------+
|id | lang A       | lang B       |
+---+--------------+--------------+
 1   lang a text    lang b text
 2   more a text... more b text...

Performance spielt hier keine Rolle, da würde ich dies nur einmal in einer Weile tun müssen, und der db ist nicht riesig (nur ein paar tausend Zeilen).

War es hilfreich?

Lösung

Eine Kreuztabellen- Abfrage sollte passen.

TRANSFORM First([Text]) AS LangText
SELECT ID, First([Text])
FROM Table 
GROUP BY ID
PIVOT lang

Weitere Informationen: http://allenbrowne.com/ser-67.html

Andere Tipps

Sie müssen eine Selbstverknüpfung:

SELECT
    t1.id, t1.text AS lang_a, t2.text AS lang_b
FROM
    lang_table AS t1
INNER JOIN
    lang_table AS t2
ON
    (t1.id = t2.id)
WHERE
    t1.lang = 'a'
AND
    t2.lang = 'b'
select a.id, a.text as 'lang A', b.text as 'lang B'
from table a join table b on (a.id = b.id)
where a.lang = 'a' and b.lang = 'b';

Dabei steht "Tisch" ist, was Tabelle sind diese in.

SELECT a.id,
MAX(CASE WHEN a.lang LIKE 'a' THEN a.text) AS Lang A,
MAX(CASE WHEN a.lang LIKE 'a' THEN a.text) AS Lang A
FROM table a
GROUP BY a.id
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top