2011-07-27 26 views
-2

データがある2つのテーブルがあり、それらを組み合わせて日付順に並べる必要があります。私は以下のクエリを持っていますが、組合は私にエラーを与え続けます。2つのテーブルからデータを選択し、日付順に並べる

SELECT 

AssetTitle, 
AssetDate, 
AssetTeaser, 
AssetLink 

FROM pressAssets WHERE AssetType=1 ORDER BY AssetDate ASC 

UNION ALL 

SELECT 

BlogTitle, 
BlogDate, 
BlogEntry, 
BlogLink 


FROM 

blogTempTable ORDER BY BlogDate ASC, AssetDate ASC; 

誰でも私にこれを手伝ってもらえますか?

+3

エラーメッセージは? –

+0

UNIONエラーです。 – CSSHell

+0

「UNIONエラー」は有効なSQL Serverエラーメッセージではありません。次に、あなたの質問と一緒に**完全な**エラーメッセージを投稿してください! –

答えて

4

コードはそのまま動作しません。これにより結果セットが得られますが、日付フィールドはすべて一緒にマージされます。 UNIONが適用された後にソースを区別できません。

SELECT 
    Title, 
    Date, 
    Teaser, 
    Link 

FROM (
SELECT 

AssetTitle Title, 
AssetDate Date, 
AssetTeaser Teaser, 
AssetLink Link 

FROM pressAssets WHERE AssetType=1 

UNION ALL 

SELECT 

BlogTitle Title, 
BlogDate Date, 
BlogEntry Teaser, 
BlogLink Link 


FROM 

blogTempTable) T 

ORDER BY Date ASC; 
+0

それはうまくいかないでしょう... –

+0

私はいくつかの小さな修正を行いました。今それは動作するはずです。 – phlogratos

+0

@phlogratos、Approved。 –

1

使用サブクエリ:

select * 
from 
(
    SELECT 

    AssetTitle, 
    AssetDate, 
    AssetTeaser, 
    AssetLink 

    FROM pressAssets WHERE AssetType=1 

    UNION ALL 

    SELECT 

    BlogTitle, 
    BlogDate, 
    BlogEntry, 
    BlogLink 


    FROM 

    blogTempTable 
)a 
ORDER BY AssetDate ASC; 
+0

'連合の後に存在しないので、' BlogDate'を 'order by'から削除しました –

1

あなたはUNION句結果セットの1 ORDER BYをのみ許可されています。 2つのクエリを個別に注文することはできません。

1

私は思う:

Select * from 
(
SELECT AssetTitle as mtitle, AssetDate as mdate, 
AssetTeaser as mtease, AssetLink as mlink 
FROM pressAssets 
WHERE AssetType=1 
UNION 
SELECT BlogTitle as mtitle, BlogDate as mdate, 
BlogEntry as mtease, BlogLink, as mlink 
FROM blogTempTable 
) 
ORDER BY mdate 

が近いだろう。

編集:これはYuckの修正された解答と同じアプローチです。

+0

私はあなたのソリューションを試しましたが、 'as'部分にエラーを投げつけています。 – CSSHell

関連する問題