-1

我有一个多语言网站,我想在网站上以所有可用语言导出产品的永久链接。如果产品没有特定语言的永久链接,则应返回一个空字符串。我的查询看起来像。

SELECT Permalink
FROM Permalink P
LEFT OUTER JOIN Languages L ON L.IDLanguage = P.IDLanguage
WHERE idProduct = 11347
ORDER BY L.IDLanguage

但我只返回产品表中的链接。如果语言表中存在语言但产品表中没有链接,则将被简单地省略。但我需要一个空字符串,这是我的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 将为空。

4

4 回答 4

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
于 2013-06-24T09:48:22.807 回答
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 演示

于 2013-06-24T10:14:17.880 回答
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
于 2013-06-24T09:49:26.490 回答
0

我认为你需要这个:

    SELECT ISNULL(Permalink,'')
    FROM Permalink P
    LEFT OUTER Languages L ON L.IDLanguage = P.IDLanguage
    WHERE idProduct = 11347
    ORDER BY L.IDLanguage
于 2013-06-24T09:51:15.010 回答