Showing posts with label productname. Show all posts
Showing posts with label productname. Show all posts

Thursday, March 8, 2012

Complicated conditional selection.

Befor question let me give you the tables, so simple:

tblProduct tblProductLang

ID ProductName Cost ID ProductName Lang
- -

1 Pencil 1 1 Bleistift gr-GR

2 Paper 1 2 Papier gr-GR

3 Button 2 3 Taste gr-GR

4 Mouse 15 4 Maus gr-GR

5 Monitor 45 4 Souris fr-FR

Ok. We have two table,
tblProduct: Keeps the product name and cost
tblProductLang: Keeps the product name in different language and short name of the language.

We are about the make a language file to our website. Default language is english. So no problem with the product name, user can easily understand. If yuser selects german , english names of the product will be nothing for him/her. We make a language table for products so when user changes language, he/she will get product name of the preffered language, if there is no equivalent name of that product, result will be default name. Let me give you a sample output:

If user wants gr-GR language , result will be: If user wants fr-FR language , result will be:

ID ProductName Cost ID ProductName Cost

- -

1 Bleistift 1 1 Pencil 1
2 Papier 1 2 Paper 1

3 Taste 2 3 Button 2

4 Maus 15 4 Souris 15

5 Monitor 45 5 Monitor 45


As you can see ID 1,2,3,4 came from tblProductLang as German, but ID 5 has no equivalent so it came from tblProduct as English.(Same thing for the french.) So question is how can i do that?

Here it is,

Code Snippet

Create Table #tblproduct(

[ID] int ,

[ProductName] Varchar(100) ,

[Cost] int

);

Insert Into #tblproductValues('1','Pencil','1');

Insert Into #tblproductValues('2','Paper','1');

Insert Into #tblproductValues('3','Button','2');

Insert Into #tblproductValues('4','Mouse','15');

Insert Into #tblproductValues('5','Monitor','45');

Create Table #tblproductlang (

[ID] int ,

[ProductName] Varchar(100) ,

[Lang] Varchar(100)

);

Insert Into #tblproductlang Values('1','Bleistift','gr-GR');

Insert Into #tblproductlang Values('2','Papier','gr-GR');

Insert Into #tblproductlang Values('3','Taste','gr-GR');

Insert Into #tblproductlang Values('4','Maus','gr-GR');

Insert Into #tblproductlang Values('4','Souris','fr-FR');

Code Snippet

Select P.ID, Isnull(L.ProductName, P.ProductName), P.Cost from #tblproduct P

left outer join #tblproductlang L

on P.[ID] = L.[ID] and [Lang] = 'fr-FR'

Select P.ID, Isnull(L.ProductName, P.ProductName), P.Cost from #tblproduct P

left outer join #tblproductlang L

on P.[ID] = L.[ID] and [Lang] = 'gr-GR'

|||YEEEES YEEEEEES. I love you man. I love you. I m crying right now. This is it. I ll never forget your name. I love youuuuu