2017-08-24 17 views
0

これらの2つのMYSQLクエリを組み合わせる方法について私の人生を理解することはできません。以下のコードの唯一の違いは、別々のフィールドを選択し、別々のエイリアスに割り当てることです。私はWITH句を使用しようとしましたが、それを理解できませんでした。どんな助けでも大歓迎です。WITH句を使用してMYSQLクエリを結合する方法

(
    SELECT TOP 1 ArticlePath 
    FROM [blog].[TBL_BlogArticles] suba WITH (NOLOCK) 
    INNER JOIN [blog].[TBL_BlogArticlesLanguages] subl WITH (NOLOCK) ON subl.LanguageCode = @LanguageCode AND subl.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogArticleCategory] subac WITH (NOLOCK) ON subac.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogCategories] subc WITH (NOLOCK) ON subc.CategoryID = subac.CategoryID 
    WHERE subc.BlogID = @BlogID AND [TimeStamp] < l.[TimeStamp] AND Enabled = 1 
    ORDER BY a.Priority DESC, [TimeStamp] DESC 
) 
AS PreviousArticlePath, 
(
    SELECT TOP 1 ArticleTitle 
    FROM [blog].[TBL_BlogArticles] suba WITH (NOLOCK) 
    INNER JOIN [blog].[TBL_BlogArticlesLanguages] subl WITH (NOLOCK) ON subl.LanguageCode = @LanguageCode AND subl.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogArticleCategory] subac WITH (NOLOCK) ON subac.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogCategories] subc WITH (NOLOCK) ON subc.CategoryID = subac.CategoryID 
    WHERE subc.BlogID = @BlogID AND [TimeStamp] < l.[TimeStamp] AND Enabled = 1 
    ORDER BY a.Priority DESC, [TimeStamp] DESC 
) 
AS PreviousArticleTitle, 
+1

あなたは組合」のことを考えていないことを確認ではなく、と? –

+1

MySQL –

答えて

0

あなただけたとえば、SELECTを追加し、同じ行にそれを持ってしようとしている場合:

SELECT 1 AS PreviousArticlePath, 2 AS PreviousArticleTitle 

結果

PreviousArticlePath PreviousArticleTitle 
1     2 

1と2は、あなたのサブクエリになります

あなたの質問には

SELECT 
(
    SELECT TOP 1 ArticlePath 
     FROM [blog].[TBL_BlogArticles] suba WITH (NOLOCK) 
    INNER JOIN [blog].[TBL_BlogArticlesLanguages] subl WITH (NOLOCK) ON subl.LanguageCode = @LanguageCode AND subl.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogArticleCategory] subac WITH (NOLOCK) ON subac.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogCategories] subc WITH (NOLOCK) ON subc.CategoryID = subac.CategoryID 
    WHERE subc.BlogID = @BlogID AND [TimeStamp] < l.[TimeStamp] AND Enabled = 1 
    ORDER BY a.Priority DESC, [TimeStamp] DESC 
) AS PreviousArticlePath, 
(
    SELECT TOP 1 ArticleTitle 
     FROM [blog].[TBL_BlogArticles] suba WITH (NOLOCK) 
    INNER JOIN [blog].[TBL_BlogArticlesLanguages] subl WITH (NOLOCK) ON subl.LanguageCode = @LanguageCode AND subl.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogArticleCategory] subac WITH (NOLOCK) ON subac.ArticleID = suba.ArticleID 
    INNER JOIN [blog].[TBL_BlogCategories] subc WITH (NOLOCK) ON subc.CategoryID = subac.CategoryID 
    WHERE subc.BlogID = @BlogID AND [TimeStamp] < l.[TimeStamp] AND Enabled = 1 
    ORDER BY a.Priority DESC, [TimeStamp] DESC 
) AS PreviousArticleTitle 

結果

PreviousArticlePath  PreviousArticleTitle 
"Some ArticlePath value" "Some ArticleTitle value" 
+0

のように見えませんクエリが既にサブクエリの場合はどうなりますか?私は 'EXISTSでサブクエリーが導入されていないときに、選択リストに指定できる式は1つだけです。 ' – TomPuts

関連する問題