我遇到了问题。我有一个类别表和category_translate表来支持多种语言。
我希望查询能用我指定的语言搜索所有类别。如果语言记录不存在,它将返回默认语言(即英语)。我进行了很多搜索,但找不到解决方案。任何人都可以帮助建议如何解决它。
category
---------------
id
category_translate
--------------------
id
category_id
language_id
is_default
name
除了结果:
id language_id name. is_default
------------------------------------------------
1 'en' 'Food' 1
1 'zh' 'Food-ZH' 0
2 'en' 'Cloth' 1
SELECT a.id, b.language_id, b.name, b.is_default
FROM category a, category_translate b
WHERE a.id = b.category_id AND language_id = 'zh'
id language_id name is_default
------------------------------------------------
1 'zh' 'Food-ZH' 0
上面的查询可以获取使用“ zh”语言的类别,但无法获取使用默认语言“ en”的其他类别
答案 0 :(得分:1)
<div formArrayName="questionForm.get('answers').controls">
<ion-card-content">
<ion-input formControlName="data"> </ion-input>
<ion-button [disabled]="questionForm.get('answers').invalid (click)="addAnswer()" >Add answer
</ion-button>
</ion-card-content>
</div>
<ion-list *ngFor="let answer of questionForm.get('answers).value; index as i">
<ion-item lines="none">
<ion-radio value="{{ i }}"></ion-radio>
<ion-label>{{ answer.data }}</ion-label>
</ion-item>
</ion-list>
子句中使用逗号。FROM
语法。您可以使用JOIN
解决问题。实际上其中两个:
LEFT JOIN
我对SELECT c.id,
COALESCE(ct.language_id, ctdefault.language_id) as language_id,
COALESCE(ct.name, ctdefault.name) as name,
(ct.language_id is null) as is_default
FROM category c LEFT JOIN
category_translate ct
ON ct.category_id = c.id AND
ct.language_id = 'zh' LEFT JOIN
category_translate ctdefault
ON ctdefault.category_id = c.id AND
ctdefault.is_default ;
的确定方式尚不清楚。如果您要搜索的语言是 的默认语言,则该值是否为true?