次のSQLがあり、2つの異なる方法で記事を選択しています。すべてのアーティクルはアーティクルテーブルに格納されます。いくつかの記事は月の記事(Articles_Fitness)としてマークされ、その他は純粋なフィットネス記事(ArticlesInCategories)としてマークされています。2つの異なるテーブルから1つのフィールドを2つ選択する(結合を使用)
私の問題は、Formatted_DateとしてArticles_Fitness.StartDateとArticles.PublicationDateの両方を選択する必要があることです。これは可能ですか、Formatted_Date1とFormatted_Date2とラベルを付けて出力する必要がありますか?
SELECT
Articles.ArticleID,
Articles.Title,
Articles.Author,
Articles.Abstract,
date_format(Articles_Fitness.StartDate, '%M %d, %Y') AS Formatted_Date,
date_format(Articles.PublicationDate, '%M %d, %Y') AS Formatted_Date
FROM
Articles
LEFT JOIN Articles_Fitness
ON Articles_Fitness.ArticleID = Articles.ArticleID
AND Articles_Fitness.StartDate <= CURDATE()
LEFT JOIN ArticlesInCategories
ON ArticlesInCategories.ArticleID = Articles.ArticleID
AND ArticlesInCategories.CategoryID = '1'
WHERE
Articles.Body IS NOT NULL AND
Articles.Body != '' AND
Articles.Public ='1'
出力フォーマットの問題のほかに、記事を選択する方法に(潜在的な)重大な問題があります。出力にArticleInCategories.CategoryID = '1'の記事を含めるようにし、Articles_Fitnessに記事を含める(開始日の基準を満たす記事)ようにしますか、または両方の記事が真である場合にのみ記事を出力に表示しますか? – UltraOne
ONEがtrueの場合は記事を含めることをお勧めします。 –
あなたが価値のあるものについては、Article.Body WHERE制約を1つに崩壊させることができます: 'Articles.Body!= '''。フィールドがnullの場合はfalseになります。 – pilcrow