SQL View über 2 Tabellen

Die wilde Inge

Lt. Commander
Registriert
Aug. 2009
Beiträge
2.041
Grüße,

ich würde gerne einen View erzeugen welcher sich Daten aus einer weiteren Tabelle holt.
Ich denke ich habe das meiste, am Ende scheitert es aber an einer Fehlermeldung mit der ich nicht klar komme.

SQL:
create view "_SM_"."AssetSearch" WITH SCHEMABINDING
as SELECT

    BASE."SEQUENCE" as "Asset ID",
    BASE."NAME" as "Asset Name",

    _CUSTOMER_.WINUSERID as "UserName",
 
   FROM "_SM_"."_INVENTORY_" as BASE

INNER JOIN T20._SM_._CUSTOMER_ ON T20._SM_._CUSTOMER_.SEQUENCE = BASE.CLIENT
GO

Erklärung:

Ich habe eine Tabelle in der Assetname usw drin steht, aber nicht der Benutzername zum Asset. Der Benutzer ist in der Inventory Tabelle nur als ID (CLIENT) geführt. In der CUSTOMER Tabelle steht wiederum die ID (SEQUENCE) und der Benutzername (WINUSERID).

Als Abfrage funktioniert das problemlos. Ohne den Punkt mit dem WINUSERID klappt auch der View, nur mit beidem zusammen dann eben nicht.

Ich erhalte folgende Fehlermeldung:

Cannot schema bind view 'SM.AssetSearch' because name 'T20.SM.CUSTOMER' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.

Was muss ich machen um das Ergebnis des funktionierenden Selects als View zu verpacken?

Danke im Voraus
 
Zeile 7 im Code. Da ist hinten ein Komma und das muss weg. Ob sonst noch was faul ist kann ich so nicht sagen.

Sorry ich bekomme immer Augenkrebs wenn ich Groß-/Kleinschreibung bei Tabellennamen und auch Aliases mit Leerzeichen sehen.
 
  • Gefällt mir
Reaktionen: Recharging
Gut gesehen :-D
Das Komma ist nur da weil die Zeile drunter entfernt habe. Die Select Abfrage war mal deutlich länger. Habs gekürzt dass es übersichtlicher wird.

Die Tabellennamen finde ich auch gewöhnungsbedürftig, ist aber nicht auf meinen Mist gewachsen. Herstellervorgabe.
 
Die wilde Inge schrieb:
Was muss ich machen um das Ergebnis des funktionierenden Selects als View zu verpacken?
Lass das Schema Binding weg.
Wie man in der Fehlermeldung lesen kann, sind die Bedingungen für das Binding nicht gegeben. Da es nicht notwendig für die Herstellung des Views ist, lass es eben weg.
 
Phrasendreher schrieb:
Lass das Schema Binding weg.
Wie man in der Fehlermeldung lesen kann, sind die Bedingungen für das Binding nicht gegeben. Da es nicht notwendig für die Herstellung des Views ist, lass es eben weg.
Die Fehlermeldung kommt aus dem INNER JOIN. Dort nutze ich einen 3-part-name statt 2-part. Eigentlich stehts ja auch in der Fehlermeldung, schön blöd. Da beide Tabellen aus dem gleichen Schema kommen, kann ich das Binding drin lassen.

Die Fehlermeldung ist jetzt vom Tisch, habe aber die nächste:

Cannot create index. Object 'CUSTOMER' was created with the following SET options off: 'ANSI_NULLS'.

Mal google was das nun wieder heißt ...
 
Steht doch (wieder) in der Fehlermeldung:
Der Typ Index, welchen Du auf Objekt (Spalte? Tabelle?) CUSTOMER anwenden willst, setzt die Option ANSI_NULLS voraus.

Ich bin nicht geläufig mit dem SQL-Dialekt, den Du verwendest (MS SQL Server?), aber falls Du diese Information rausrückst, riskierst Du, dass Dir hier noch irgendwelche Cracks richtige Hilfe leisten.
 
MS SQL korrekt.

Für meine Tabelle ist die Option ANSI_NULLS auf False gesetzt. Leider lässt sich das nachträglich nicht mehr auf True setzen. Ich werde mal probieren eine neue Tabelle zu erzeugen, die Daten rüberzuschaufeln und dann die neue Tabelle umzubennen. Mal gucken ob das von Erfolg gekrönt ist.
 
Zurück
Oben