2016-05-07 7 views
0

に単純なSQLの変換、私のコードは次のとおりです。私は、SQLアクセス・コードにSQLコードを変換するためのいくつかの助けを必要とする「アクセスSQL」

SELECT `HOTEL`.`NAME_H`,`ROOM`.`NUMBER_R`,`ROOM`.`FLOOR_R` 
FROM HOTEL, ROOM 
WHERE `HOTEL`.`CODE_H`=`ROOM`.`CODE_H` 
AND `HOTEL`.`TOWN_H`=`Athens` 
AND (`HOTEL`.`CODE_H`,`ROOM`.`NUMBER_R`) 
NOT IN (SELECT `CODE_H`,`NUMBER_R` FROM RESERVATION) 

そのアクセスで実行されていない、私はしません使用する方法がわかりませんmsで、任意のアイデアですか?私は問題を抱えているし、別の1で、私のコードは次のとおりです。

SELECT `ΟFFER`.`CODE_O`,`HOTEL`.`NAME_H`,`ROOMTYPE`.`NAME_RT`,MIN(`OFFER`.`PRICE_O`) 
FROM OFFER,HOTEL,ROOMTYPE 
WHERE `OFFER`.`CODE_H`=`HOTEL`.`CODE_H` 
AND `OFFER`.`CODE_RT`=`ROOMTYPE`.`CODE_RT` 
GROUP BY `CODE_O` 
+0

あなたが受け取った完全なエラーメッセージはどうですか?また、Access SQLのどの位置がエラーとしてマークされているかを追加します。 – Andre

+0

「NOT IN」はAccess SQLでは有効ですが、複数の列ではなく1つの列に配置する必要があります。 2番目の問合せでは、問合せごとにGROUP BY句で集計されていない列をすべて参照する必要があります。悲しいことですが、MySQLは、ほとんどのRDMSのために、それがonly_full_group_byの設定に応じて失敗するようなクエリを許可します。 – Parfait

+0

元々どのRDBMSを使用していますか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –

答えて

1

これは動作するはずです:

SELECT h.NAME_H, r.NUMBER_R, r.FLOOR_R 
FROM HOTEL as h INNER JOIN 
    ROOM as r 
    ON h.code_h = r.code_h 
WHERE h.TOWN_H = "Athens" AND 
     NOT EXISTS (SELECT 1 
        FROM RESERVATION as r 
        WHERE h.CODE_H = r.CODE_H AND 
         h.NUMBER_R = r.NUMBER_R 
       ); 

実際には、これはほとんどのデータベースで動作するはずです。

+0

msアクセス2007で動作していない、それは私にパラメータを求めます。 –

+0

秒についてのアイデアは? –

+0

@ Nick.P。 。 。 。バックティックは見落としだった。一重引用符は別の問題でした。 。 。 MS Accessは文字列に二重引用符を使用します。 –

関連する問題