プロが教える店舗&オフィスのセキュリティ対策術

環境
WindowsXP
Access2003

SELECT A.ID, A.NAME, A.DATE
FROM (
(SELECT ID, NAME, DATE FROM ・・・) A
LEFT JOIN
(SELECT ID, NAME, DATE FROM ・・・) B
ON A.ID = B.ID
)
ORDER BY A.ID

こんな感じのSQLを実行すると、
「抽出条件でデータ型が一致しません」
というエラーとなります。

SQL文を以下の様に変更すると、エラーにはなりません。
1.「ORDER BY A.ID」排除
2.ORDER句を「A.ID」以外の「A.NAME」「A.DATE」「B.ID」「B.NAME」「B.DATE」に変更
3.ON句の順番を「ON B.ID = A.ID」に入れ替え(ORDER句は、「A.ID」のまま)

なぜ、このようなエラーになるのでしょうか?
特に3が理解不能なのですが、
ON句の順番がORDER句に影響を及ぼすことがあるのでしょうか?

以上、よろしくお願いします。

A 回答 (3件)

別に新規MDBを作成して、すべてインポートしなおして見たほうが良いかも。

    • good
    • 0

質問文に出てる部分から想定されるクエリを試してみたら、普通に表示されたので、環境的な問題なのかも。

    • good
    • 0

> (SELECT ID, NAME, DATE FROM ・・・) A


> LEFT JOIN
> (SELECT ID, NAME, DATE FROM ・・・) B
はしょって書いておられますが、Aの元ネタテーブルとBの元ネタテーブルは同じもの?
別テーブルであるなら、それぞれの列[ID]はどのようなデータ型?

この回答への補足

手抜きですいません。
手元に環境がないので、正確なSQLは出せないのですが、
AとBは別テーブルです。
IDとNAMEは文字型・DATEは日付型です。
ORDER句の前にWHERE句で、A.DATE > B.DATEの条件があります。

補足日時:2013/04/10 22:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!