Syntax error: missing expression (ORA-00936)
Ich habe 2 Tabellen, Facilities
und Services
.
CREATE TABLE Facilities (
facility_id NUMBER(2) NOT NULL,
facility_name VARCHAR2(20) NOT NULL,
CONSTRAINT pk_facil_id PRIMARY KEY (facility_id)
);
CREATE TABLE Services (
service_id NUMBER(2) NOT NULL,
service_name VARCHAR(20) NOT NULL,
service_facility NUMBER(2) NOT NULL,
CONSTRAINT pk_serviceid PRIMARY KEY (service_id)
);
ALTER TABLE Services
add CONSTRAINT fk_servicefacility FOREIGN KEY(service_facility)
REFERENCES Facilities(facility_id);
Wenn ich versuche die Eingabe von Datensätzen in die 'Dienste' Tabelle etwa so:
INSERT INTO Services (service_id, service_name, service_facility)
SELECT 06, 'Rooms',
(SELECT facility_id, FROM Facilities WHERE facility_name = 'Hotel')
FROM Dual;
Bekomme ich einen Fehler "missing expression" für 3 von den 7 insert-Anweisungen. Was Ausdruck fehlt?
Der Dienst sollte eine FacilityID, welches ein Fremdschlüssel auf den Primärschlüssel in den Einrichtungen Tabelle. Die Einrichtung Tabelle sollte nicht über einen Verweis auf die Service-Tabelle. Sie müssen dann erstellen Sie einen service-Datensatz für jeden Dienst an einem Standort. Also, wenn 2 Einrichtungen bieten Wasser, dann hättest du 2 Platten in Betrieb, eine für Wasser und Anlage 1, eine für Wasser und Anlage 2
Ich weiß nicht, ob Sie verstehen, was ich versuche zu tun. Ich habe eine Anlage sagen
Ja, deine Tabellenstruktur ist korrekt, aber sind Sie hinzufügen von Datensätzen, um es richtig?
Ich weiß nicht, ob Sie verstehen, was ich versuche zu tun. Ich habe eine Anlage sagen
Health Centre
. Das Gesundheitszentrum kann eine Gym
, Pool
und Spa
. Aber ich will nicht die Gym
zu werden, der anderen EinrichtungJa, deine Tabellenstruktur ist korrekt, aber sind Sie hinzufügen von Datensätzen, um es richtig?
InformationsquelleAutor adohertyd | 2012-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die SQL-Anweisung, die Sie geschrieben hat, ein zusätzliches Komma. Wenn Sie führen Sie die Anweisung in SQL*Plus, Sie wirft die ORA-00936: missing expression und zeigen Ihnen genau, wo der Fehler Auftritt
Wenn Sie entfernen das Komma, wirkt die Anweisung
Beachten Sie jedoch, dass würde ich in der Regel lieber Stefan-syntax, wobei Sie die Auswahl aus
Facilities
eher als die Auswahl vondual
mit einer skalaren subquery.INSERT
Aussage?bitte posten Sie, die sql -, die in Ihrer Frage so, dass wir die Adresse Ihrer echten problem werden.
Ich bearbeitet meine ursprüngliche Frage statt
Aktualisiert meine Antwort
Der Grund, warum ich wählen Sie aus Dual ist, denn das war die einzige syntax, die ich für diese Besondere Art der
INSERT
- Anweisung. Ich habe eine vage Vorstellung davon, wie die Dual-Tabelle funktioniert, aber ich bin offen für die Verbesserung meiner coding standard. Ist es nur eine Frage oder entfernen der dual-Anweisung und die Formatierung als pro Stefan ' s post?InformationsquelleAutor Justin Cave
Ihre insert-Anweisung sollte sein:
In es aktuellen Status der Abfrage, die ich zur Verfügung gestellt wird, fügen Sie einen service-Eintrag für Zimmer, für jeden Standort mit dem Namen Hotel.
Und fügen Sie dann auf eine Verknüpfung zu Ihrem 'Dual' - Tabelle, so dass Sie die richtige Anzahl von inserts /sind immer die richtige Ausstattung.
INSERT
Aussagen für andere Tabellen, die dieselbe syntax wie die, die ich gepostet und Sie funktioniert Prima. Ich bin neu in SQL und kämpfen mit einigen dieser syntaxInformationsquelleAutor Stefan H