显示结果是否为空。 SQL
Display results if null or not. SQL
我有两个表,ingredient
和 ingredient_language
。
我需要显示(来自 SQL)每种成分的所有翻译,如果我没有某种语言的任何翻译,行必须像这样显示,例如:
Language | Ingredient
ENG Salt
GER NULL
如何显示?
表的结构是
Ingredient{id_ingredient}
Ingredient_Language{id_ingredient, id_language, traduction}
谢谢。
编辑:
SELECT i.id_ingredient, l.id_language, l.trad
FROM Ingredient i
LEFT OUTER JOIN Ingredient_language l ON l.id_ingredient = i.id_ingredient
好的,结构是:
·Table 1 (Ingredient) > Columns: Id_ingredient (PK), standard_name
·Table 2 (Language) > Columns: ID_Language (PK), name_language
·Table 3 (Ingredient_Language) > Columns: ID_Ingredient_Language (PK),ID_ingredient (FK), ID_LANGUAGE(FK), description
数据示例(此时不能做任何画面):
·Table 1: 01, Orange
·Table 2: SP, SPANISH
ENG, ENGLISH
·Table 3: 01, 01, SP, Naranja
我需要得到什么?下面的例子:
Header: id_language, id_ingredient, description
Row1: SP 01 NARANJA
Row2: ENG 01 NULL
感谢您的帮助。
SELECT l.traduction,l.id_language,i.id_ingredient
FROM Ingredient_Language AS l
LEFT OUTER JOIN Ingredient AS i ON l.id_ingredient = i.id_ingredient
只需根据您的需要更改 SELECT 部分。
只是猜测,您可能真的想从您的语言开始加入 table 喜欢
SELECT l.id_language,i.id_ingredient
FROM Language l
LEFT OUTER JOIN Ingredient_Language il ON l.id_language = il.id_language
LEFT OUTER JOIN Ingredient i ON li.id_ingredient = i.id_ingredient
您想从交叉连接开始,它将每种成分与每种语言结合起来:
SELECT i.id_ingredient, l.id_language, il.trad
FROM Ingredient i
CROSS JOIN Language l
并将所有现有翻译添加到
LEFT JOIN Ingredient_language il
ON il.id_ingredient = i.id_ingredient
AND il.id_language = l.id_language
如果你的数据库不支持 CROSS JOIN
你可以试试
SELECT i.id_ingredient, l.id_language, il.trad
FROM Ingredient i
JOIN Language l ON 1=1
LEFT JOIN Ingredient_language il
ON il.id_ingredient = i.id_ingredient
AND il.id_language = l.id_language
我有两个表,ingredient
和 ingredient_language
。
我需要显示(来自 SQL)每种成分的所有翻译,如果我没有某种语言的任何翻译,行必须像这样显示,例如:
Language | Ingredient
ENG Salt
GER NULL
如何显示?
表的结构是
Ingredient{id_ingredient}
Ingredient_Language{id_ingredient, id_language, traduction}
谢谢。
编辑:
SELECT i.id_ingredient, l.id_language, l.trad
FROM Ingredient i
LEFT OUTER JOIN Ingredient_language l ON l.id_ingredient = i.id_ingredient
好的,结构是:
·Table 1 (Ingredient) > Columns: Id_ingredient (PK), standard_name
·Table 2 (Language) > Columns: ID_Language (PK), name_language
·Table 3 (Ingredient_Language) > Columns: ID_Ingredient_Language (PK),ID_ingredient (FK), ID_LANGUAGE(FK), description
数据示例(此时不能做任何画面):
·Table 1: 01, Orange
·Table 2: SP, SPANISH
ENG, ENGLISH
·Table 3: 01, 01, SP, Naranja
我需要得到什么?下面的例子:
Header: id_language, id_ingredient, description
Row1: SP 01 NARANJA
Row2: ENG 01 NULL
感谢您的帮助。
SELECT l.traduction,l.id_language,i.id_ingredient
FROM Ingredient_Language AS l
LEFT OUTER JOIN Ingredient AS i ON l.id_ingredient = i.id_ingredient
只需根据您的需要更改 SELECT 部分。
只是猜测,您可能真的想从您的语言开始加入 table 喜欢
SELECT l.id_language,i.id_ingredient
FROM Language l
LEFT OUTER JOIN Ingredient_Language il ON l.id_language = il.id_language
LEFT OUTER JOIN Ingredient i ON li.id_ingredient = i.id_ingredient
您想从交叉连接开始,它将每种成分与每种语言结合起来:
SELECT i.id_ingredient, l.id_language, il.trad
FROM Ingredient i
CROSS JOIN Language l
并将所有现有翻译添加到
LEFT JOIN Ingredient_language il
ON il.id_ingredient = i.id_ingredient
AND il.id_language = l.id_language
如果你的数据库不支持 CROSS JOIN
你可以试试
SELECT i.id_ingredient, l.id_language, il.trad
FROM Ingredient i
JOIN Language l ON 1=1
LEFT JOIN Ingredient_language il
ON il.id_ingredient = i.id_ingredient
AND il.id_language = l.id_language