Programmieren - alles kontrollieren 4.942 Themen, 20.719 Beiträge

SQL: Probleme mit View erstellen

d-oli / 1 Antworten / Baumansicht Nickles


Hi


 


Ich habe da wohl eine Denkblockade und komme deshalb nicht weiter. Das Problem ist folgendes (Tabellen, Constraints etc. stark vereinfacht; Oracle SQL-Syntax):


 


<b>Tabelle 1:</b>


CREATE TABLE mydb.person (


&nbsp; &nbsp; &nbsp;id            INTEGER                       NOT NULL,


&nbsp; &nbsp; &nbsp;name      VARCHAR2 (240)         NOT NULL,


&nbsp; &nbsp; &nbsp;typ          VARCHAR2 (60)           NULL


);


id = Primary key


typ = CHECK (NULL, ‘Kunde’, ’Verkäufer’, ’Techniker’)


 


<b>Tabelle 2:</b>


CREATE TABLE mydb.beziehungen (


&nbsp; &nbsp; &nbsp;id                         INTEGER                       NULL,


&nbsp; &nbsp; &nbsp;fk_kund              INTEGER                       NULL,


&nbsp; &nbsp; &nbsp;fk_verkäufer       INTEGER                       NULL,


&nbsp; &nbsp; &nbsp;fk_techniker       INTEGER                       NULL,


);


id = Primary key


die Fremdschlüssel ’fk_kunde’, ’fk_verkäufer’ und ’fk_techniker’ beziehen sich jeweils auf die Schlüssel (id) in der Tabelle ’person ’.


 


 


Nun möchte ich einen View kreieren, der die Daten wie folgt anzeigen soll:


 


| Kunde | Verkäufer | Person |


 ----------------------------------


| ich       | du             | sie       |


-----------------------------------


 


Jetzt weiss ich aber nicht genau, wie ich die AS SELECT bla, bla, bla, FROM bla, bla, bla Abfrage im View gestallten soll.


 


Der View muss nicht prüfen, ob der Verkäufer auch tatsächlich den Wert ’Verkäufer’ im Attribut ’typ’ hat.


 


Wer kann mir weiterhelfen.


 


Dank und Gruss


d-oli


 


 

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Borlander d-oli „SQL: Probleme mit View erstellen“
Optionen

Also ich würde das spontan so versuchen (ohne schon bisher mit Oracle zu tun gehabt zu haben):

SELECT k.name AS Kunde, v.name AS Verkäufer, t.name AS Techniker
FROM
(
  (
    beziehungen
    LEFT JOIN person AS k ON fk_kund=k.id
  )
  LEFT JOIN person AS v ON fk_verkäufler=v.id
)
LEFT JOIN person AS t ON fk_techniker=t.id


Natürlich ungetestet...


Gruß
Borlander
bei Antwort benachrichtigen