Skip to content
Advertisement

How do I correctly map letters in the database?

I have two tables. One table with the letters of different countries and a second table with a mapping of these letters to each other.

I need to make a query to get the mapped letters of the two languages. Can you tell me how this can be done optimally?

The letter table

id letter language
1 A en
2 Ä de
3 A de
4 O en
5 O de
6 Ö de

The letter mapping table

id letter1(letterTable.id) letter2(letterTable.id)
1 1 2
2 1 3
3 4 5
4 4 6

Would it be better to create a separate table for each alphabet?

Maybe there is some other architectural approach for this kind of letter matching? I would really appreciate it!

Advertisement

Answer

This can be achieved with a join that is restricted to the two languages you want to check:

select en.id as id_en, 
       en.letter as letter_en, 
       de.id as id_de,
       de.letter as letter_de
from letter en
  join letter_mapping lm on lm.letter1 = en.id
  join letter de on de.id = lm.letter2 and de.language = 'de'
where en.language = 'en';

Online example

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement