人気ブログランキング | 話題のタグを見る
(SQL)Accessでは結合条件にLiteralが書けない!?
この直前の記事(SQL)SQLで区分などの複数の意味を持たせてるテーブルを何回も結合する方法でSQLを紹介しましたが、あのSQLをAccessで実行したら「JOIN式はサポートされていません。」というエラーが出ました。

いろいろ試したところどうやら結合条件(ON句)で下記のようにリテラルが使えないようです。

Customer.SettingDiv = 1 ←この1というリテラルがダメっぽい。

ということで、途方に暮れたのですが、同僚に聞いたところ副問い合わせを駆使することで解決しました。
下記のような感じです。(Access方言のため、JOINに括弧が入ってます)

SELECT Customer.ID ,
Customer.CustomerName ,
Customer.BloodType ,
BloodTypeText.Contents ,
Customer.Sex ,
SexText.Contents ,
Customer.Job ,
JobText.Contents
FROM (((Customer
LEFT OUTER JOIN
(SELECT *
FROM Setting
WHERE SettingDiv =1
) BloodTypeText
ON Customer.BloodType= BloodTypeText.SettingID)
LEFT OUTER JOIN
(SELECT *
FROM Setting
WHERE SettingDiv =2
) SexText
ON Customer.Sex = SexText.SettingID)
LEFT OUTER JOIN
(SELECT *
FROM Setting
WHERE SettingDiv =3
) JobText
ON Customer.Job = JobText.SettingID)


まったく、AccessのSQLにはやられますわ。
本当は使いたくないんですが、スタンドアロンアプリのデータ保存にはmdbが一番手軽なので、OLEDB経由で仕方なく使ってます。
by jehoshaphat | 2008-11-29 19:57 | SQL


<< (VB.Net)フォームの表示... (SQL)SQLで区分などの複... >>