我有一个多语言网站,我想在网站上以所有可用语言导出产品的永久链接。如果产品没有特定语言的固定链接,则应返回空字符串。我的查询看起来像。
SELECT Permalink
FROM Permalink P
LEFT OUTER JOIN Languages L ON L.IDLanguage = P.IDLanguage
WHERE idProduct = 11347
ORDER BY L.IDLanguage
但我只返回产品表中的链接。如果语言表中存在laguage但在Product表中没有链接,则将省略它。但我需要一个空字符串,这是我的Language
表
IDLanguage Name
_________________________
1 English
2 German
12 Hungarian
18 Slovenian
这是Product
表
IDProduct IDLanguage SEOName Permalink
1 1 abc abc.html
1 2 ölm oelm.html
1 18 jhas jhas.html
例如,ID为1的产品只有3个链接,但在语言表中我有4种语言。这意味着查询仍应返回4行,其中IDLaguage = 12,它将为空。
答案 0 :(得分:1)
我认为RIGHT OUTER JOIN是你需要的
SELECT Permalink
FROM Permalink P
RIGHT OUTER JOIN Languages L ON L.IDLanguage = P.IDLanguage
WHERE idProduct = 11347
ORDER BY L.IDLanguage
答案 1 :(得分:1)
SELECT COALESCE(p.Permalink, '')
FROM Languages l
LEFT JOIN dbo.Product p ON p.IDLanguage = l.IDLanguage
WHERE p.IDProduct = 1 OR p.IDProduct IS NULL
ORDER BY L.IDLanguage
<强> SQLFiddle DEMO 强>
答案 2 :(得分:0)
我猜你需要FULL OUTER JOIN
SELECT Permalink
FROM Permalink P
Full Outer Join Languages L ON L.IDLanguage = P.IDLanguage
WHERE idProduct = 11347
ORDER BY L.IDLanguage
答案 3 :(得分:0)
我认为你需要这个:
SELECT ISNULL(Permalink,'')
FROM Permalink P
LEFT OUTER Languages L ON L.IDLanguage = P.IDLanguage
WHERE idProduct = 11347
ORDER BY L.IDLanguage