2016-05-07 9 views
0

ich etwas Hilfe benötigen SQL-Code SQL-Zugangscode, meinen Code zu transformieren ist:Transforming einfache SQL "access 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) 

seine läuft nicht im Zugriff, ich weiß nicht, wie man es nicht verwenden in ms, irgendwelche Ideen? Ich habe ein Problem und mit einem anderen, mein Code:

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

Wie wäre es mit Ihnen die vollständigen Fehlermeldungen geben Sie erhalten? Und fügen Sie hinzu, welche Position in Access SQL als Fehler markiert ist. – Andre

+0

"NOT IN" ist in Access SQL gültig, aber Sie müssen es auf eine Spalte, nicht auf mehrere Spalten ausrichten. Wie bei der zweiten Abfrage müssen für nicht-aggregierte Spalten für Abfragen nach Gruppen in der Klausel GROUP BY referenziert werden. Leider erlaubt MySQL eine solche Abfrage, bei der es für die meisten RDMS je nach Einstellung von only_full_group_by fehlschlägt. – Parfait

+0

Welche RDBMS verwenden Sie ursprünglich? Bitte fügen Sie ein Tag hinzu, um anzugeben, ob Sie 'mysql',' postgresql', 'sql-server',' oracle' oder 'db2' verwenden - oder etwas ganz anderes. –

Antwort

1

Dies sollte funktionieren:

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 
       ); 

In der Tat, dies sollte in den meisten Datenbanken arbeiten.

+0

es funktioniert nicht in MS Access 2007, fragt mich nach einem Parameter. –

+0

Irgendwelche Ideen über die zweite? –

+0

@ Nick.P. . . . Die Backticks waren ein Versehen. Die einfachen Anführungszeichen waren ein anderes Problem. . . MS Access verwendet doppelte Anführungszeichen für Zeichenfolgen. –