SQL Fehlermeldung

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo Fanja,
das ist wohl in Ordnung so :P
Da noch keine Daten in der Tabelle sind, kann er auch keine anzeigen. Aber die Syntax der SELECT-Abfrage stimmt, das ist doch schon prima.

Ich persönlich übertrage den kompletten Komplex zwischen CREATE VIEW und dem abschließenden Strichpunkt (inklusive) hinter dem letzten JOIN (also ohne TERM und die ^) in den SQL-Editor und führe die Anweisung dann dort mit [F9] aus. Hat bis jetzt bei korrekter Syntax immer funktioniert.

Was sagt Dein SQL-Editor dazu ?

Gruß
Geri12
Fanja
Beiträge: 20
Registriert: Mo Jun 30, 2008 12:57 pm

Beitrag von Fanja »

So, jetzt wirds interessant:
Ich habe den kompletten Aufbau einmal durchlaufen lassen, dabei kam wieder die Fehlermeldung: Anzahl elemente stimmt nicht überein. Also nocheinmal durchgezählt und siehe da: Das Feld Bemerkung existierte nur einmal. Brauch ich eh nicht also raus damit. Fehlerfreier Durchlauf JUHU :lol:
Nun das ganze im Script Executive ausgeführt
Fehlermeldung:

Code: Alles auswählen

This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$RELATION_FIELDS failed. deadlock. attempt to store duplicate value (visible to active transaction) in unique index "RDB$INDEX_15".
Ich glaube das Feld BEMERKUNG in der Tabelle ist der Grund, da es jetzt aus der select und create Anweisung gelöscht wurde. Aber eigendlich müsste das doch egal sein, dann gibt es halt ein Feld in der Tabelle, dass nicht abgefragt wird, oder???
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo Fanja,
in der Feldliste unter CREATE VIEW scheint ein Feldname doppelt zu sein. Bitte mal nachschauen.

Tabellenfelder nicht in einer View aufzuführen ist in Ordnung. Eine View ist eine neue virtuelle Tabelle. Eine "Sicht" auf diverse (miteinander verbundene) Tabellen. Und was in die View reinkommt bestimmst Du...

...entsprechend der Notwendigkeit, was Du mit der View anfangen willst :wink:

Gruß
Geri12
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Hallo Fanja,

das hört sich jetzt allerdings so an, als würde Dein System versuchen, eine View anzulegen die es schon gibt? Das ist zumindest der Sinn der Fehlermeldung mit dem "Attempt to store duplicate value" und die Nummer des Index, der den Fehler erzeugt ist so niedrig, daß das ein Systemindex sein müßte.

Ich denke am einfachsten wäre es, wenn Du nochmal mit einer leeren Datenbank von vorne anfängst.

Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
Fanja
Beiträge: 20
Registriert: Mo Jun 30, 2008 12:57 pm

Beitrag von Fanja »

Das ist schön zu hören, dass ich in dem Punkt richtig liege. Dies ist ja auch nur die Beispielaufgabe aus dem Programmierhandbuch.
Ich kann dort nichts doppeltes erkennen, vllt fällt dir ja was auf:
View:

Code: Alles auswählen

CREATE VIEW V_BAVERP(
ID,
MASKENKEY,
BKUNDE_ID,
BSM_ID,
DATUM,
GEDRUCKT,
BENUTZER,
GESPEICHERT,
BKUNDE_MASKENKEY,
BKUNDE_BADR_NAME,
BKUNDE_BADR_BEZ,
BKUNDE_BADR_ABTEILUNG,
BKUNDE_BADR_STRASSE,
BKUNDE_BADR_BPLZ_MASKENKEY,
BKUNDE_BADR_BPLZ_ORT,
BSM_MASKENKEY,
BSM_NAME) 
select:

Code: Alles auswählen

AS
SELECT
A.ID,
A.MASKENKEY,
A.BKUNDE_ID,
A.BSM_ID,
A.DATUM,
A.GEDRUCKT,
A.BENUTZER,
A.GESPEICHERT,
B.MASKENKEY,
C.NAME,
C.BEZ,
C.ABTEILUNG,
C.STRASSE,
D.MASKENKEY,
D.ORT,
E.MASKENKEY,
E.NAME
FROM BAVERP A
LEFT OUTER JOIN BKUNDE B ON A.BKUNDE_ID = B.ID
LEFT OUTER JOIN BADR C ON B.BADR_ID_ADRNR = C.ID
LEFT OUTER JOIN BPLZ D ON C.BPLZ_ID_LANDPLZ = D.ID
LEFT OUTER JOIN BSM E ON A.BSM_ID = E.ID
; 
Kannst mir glauben, das wurmt mich total, so ein blödes Handbuch. Aber wenn ich die Aufgabe drin habe, sollte mein eigendliches Vorhaben kein Problem mehr darstellen.

edit:

schau mal im select-code:

Code: Alles auswählen

B.MASKENKEY,
C.NAME,
C.BEZ,
C.ABTEILUNG,
C.STRASSE,
MAskenkey beginnt mit B, die Felder werden aber mit C referenziert. Kann es das sein?
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo Fanja,
hier kann ich auch nichts Doppeltes erkennen.

Das mit den Feldern ist schon in Ordnung (das mit dem Handbuch auch :lol: ) ...
B.MASKENKEY enthält die Kunden-Nr. aus der Kundentabelle BKUNDE alias B
C.NAME ist aus der Adressentabelle BADR alias C der zugehörige Name
... das passt schon.

@Michael: Existiert die View schon, gibt's die Fehlermeldung "Table V_??? alredy exists"

Sorry, hier weiß ich nicht mehr weiter. Wenn's bei mir am Anfang geklemmt hat mit dem BAVERP-Beispiel, dann hatte ich meistens irgendwo einen Hund eingebaut. Ich würde hier auch neu beginnen ...

Gruß
Geri12
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

P.S. Im IBExpert ist bei einer geöffneten Tabelle links von "Zähle Datensätze" ein Symbol namens "Erzeuge View". Damit kannst Du eine Standard-View erst mal vom System erzeugen lassen, dann speichern. Dann stimmt schon als mal die View-Basis. Danach stückweise erweitern und wieder speichern.

Gruß
Geri12
Fanja
Beiträge: 20
Registriert: Mo Jun 30, 2008 12:57 pm

Beitrag von Fanja »

Ja ich werde nochmal von vorne beginnen, nützt nix.
Danke vorerst für die zahlreichen Hilfestellungen. Morgen geht es weiter, jetzt tu ich erstmal was für meine Bikinifigur xD
Antworten