2017-08-24 3 views
0

Je ne peux pas comprendre pour la vie de moi comment faire pour combiner ces deux requêtes MYSQL. La seule différence dans le code ci-dessous est qu'ils sélectionnent des champs séparés et les affectent à des alias distincts. J'ai essayé d'utiliser la clause WITH mais je n'ai pas réussi à le comprendre. Toute aide serait grandement appréciée.Comment combiner la requête MYSQL en utilisant la clause WITH

(
    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

Vous êtes sûr que vous ne pensez pas 'union' plutôt que? –

+1

Ne ressemble pas à MySQL –

Répondre

0

Si vous essayez d'avoir sur la même ligne, il suffit d'ajouter SELECT, par exemple:

SELECT 1 AS PreviousArticlePath, 2 AS PreviousArticleTitle 

Résultat

PreviousArticlePath PreviousArticleTitle 
1     2 

1 et 2 sera votre sous-requête Pour votre requête sera

Résultat

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

Que faire si les requêtes sont déjà une sous-requête? J'obtiens 'Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête n'est pas introduite avec EXISTS. ' – TomPuts