SQL VIEW ABFRAGE

mumpel

Neuer Benutzer
Beiträge
2
Hallo ihr :)

Ich bin Aktuell an einer Aufgabe seitens Schule dran die mich in die verzweiflung treibt und brauch mal eure Hilfe bzw denk anstöße.....
Gegeben ist folgende Tabelle

CREATE TABLE KUNDEN(
KID char (20),
Name char(20),
VNAME char(20),
Strasse char(40),
PLZ INTEGER,
ORT char(30),
Telefon INTEGER,
GEB_DATUM char (20),
PRIMARY KEY(KID)
);

CREATE TABLE VERMITTLER(
VID char (20) ,
Name char(20),
VNAME char(20),
Abteilung char(40),
Telefon char (20),
PROVISION_IN_PROZENT INTEGER,
PRIMARY KEY(VID)
);

CREATE TABLE ZEITSCHRIFT(
ZID char (20),
Name char(20),
TYP char(20),
PREIS FLOAT,
STATUS INTEGER,
PRIMARY KEY(ZID)
);


CREATE TABLE ABO (
AID char (20),
KID char(20),
ZID char (20),
VID char (20),
PRIMARY KEY(AID),
FOREIGN KEY(KID) REFERENCES KUNDEN(KID),
FOREIGN KEY(VID) REFERENCES VERMITTLER(VID),
FOREIGN KEY(ZID) REFERENCES ZEITSCHRIFT(ZID)
);


INSERT INTO KUNDEN values ('K01', 'Ingo', 'Mueller', 'Fliederweg 16', 99817, 'Eisenach', '0369143564', '02.11.85');
INSERT INTO Kunden values ('K02', 'Frieda', 'Schmidt', 'Lindenstraße 20', 99867, 'Gotha', '036211044478', '23.02.98');
INSERT INTO Kunden values ('K03', 'Anna', 'Meyer', 'Hauptstrasse 11', 99817, 'Eisenach', '03691993446', '14.07.91');
INSERT INTO Kunden values ('K04', 'Ludwig', 'Schulze', 'Linke Gasse 3c', 99867, 'Gotha', '03621552298', '26.12.90');
INSERT INTO Kunden values ('K05', 'Hans', 'Sommer', 'Breiter Weg 1', 99084, 'Erfurt', '0361395734', '02.12.88');
INSERT INTO Kunden values ('K06', 'Bernd', 'Kluge', 'Hutweide 43a', 99817, 'Eisenach', '03691858328', '08.04.90');
INSERT INTO Kunden values ('K07', 'Alfons', 'Breitenbach', 'Sackgasse 33', 99084, 'Erfurt', '0361563254', '05.05.82');
INSERT INTO Kunden values ('K08', 'Liselotte', 'Gaentsch', 'Schoene Allee 93f', 99867, 'Gotha', '0362167724', '06.11.88');
INSERT INTO Kunden values ('K09', 'Elma', 'Friedrich', 'Bruchtaler Weg 12', 99817, 'Eisenach', '03691478982', '12.07.85');
INSERT INTO Kunden values ('K10', 'Georg', 'Winter', 'Alte Strasse 62c', 99084, 'Erfurt', '03619962358', '22.09.92');

INSERT INTO VERMITTLER VALUES ('V01', 'Achim', 'Schnell', 'M', 8368, 7);
INSERT INTO VERMITTLER VALUES ('V02', 'Knut', 'Lustig', 'TZ', 3252, 12);
INSERT INTO VERMITTLER VALUES ('V03', 'Inge', 'Breit', 'FZ', 67875, 3);
INSERT INTO VERMITTLER VALUES ('V04', 'Adam', 'Lang', 'M', 1134, 26);
INSERT INTO VERMITTLER VALUES ('V05', 'Gisela', 'Kurz', 'FZ', 5452, 38);
INSERT INTO VERMITTLER VALUES ('V06', 'Fritz', 'Langsam', 'TZ', 573632, 15);

insert into ZEITSCHRIFT values ('Z01', 'Bunte', 'Magazin', 2.5, 7);
insert into ZEITSCHRIFT values ('Z02', 'Spiegel', 'Magazin', 4.3, 9);
insert into ZEITSCHRIFT values ('Z03', 'TLZ', 'Tageszeitung', 1.2, 4);
insert into ZEITSCHRIFT values ('Z04', 'FAZ', 'Tageszeitung', 2.1, 6);
insert into ZEITSCHRIFT values ('Z05', 'Sueddeutsche', 'Tageszeitung', 1.9, 5);
insert into ZEITSCHRIFT values ('Z06', 'PC-Shopping', 'Fachzeitschrift', 4.4, 7);
insert into ZEITSCHRIFT values ('Z07', 'Audio/Connect', 'Fachzeitschrift', 3.8, 4);
insert into ZEITSCHRIFT values ('Z08', 'BILD', 'Tageszeitung', 1.75, 9);
insert into ZEITSCHRIFT values ('Z09', 'Connect', 'Fachzeitschrift', 6.2, 8);
insert into ZEITSCHRIFT values ('Z10', 'Frau im Bild', 'Magazin', 2.35, 3);

insert into ABO values ('A01', 'K01', 'Z02', 'V01');
insert into ABO values ('A02', 'K02', 'Z06', 'V04');
insert into ABO values ('A03', 'K03', 'Z05', 'V02');
insert into ABO values ('A04', 'K07', 'Z04', 'V06');
insert into ABO values ('A05', 'K08', 'Z01', 'V01');
insert into ABO values ('A06', 'K08', 'Z02', 'V03');
insert into ABO values ('A07', 'K04', 'Z06', 'V06');
insert into ABO values ('A08', 'K04', 'Z07', 'V01');
insert into ABO values ('A09', 'K04', 'Z01', 'V04');
insert into ABO values ('A10', 'K05', 'Z03', 'V06');


Aufgabenstellung:
Schreiben Sie ein SQl-Statement, das lhnen die KID der Kunden mit dem
Gesamtpreis all lhrer Abos anzeigt, wenn dieser über 3 Euro liegt.

in die Richtung bewegte ich mich bisher aber ohne erfolg....

CREATE VIEW AS02 AS
SELECT a.KID,a.ZID,COUNT(a.ZID)as ZID_GESAMT,z.PREIS
FROM ABO a, Zeitschrift z
WHERE z.zid = a.zid;
SELECT * FROM AS02;

mfg aron
 
Werbung:
ich bekomme bei copy&paste Deiner Anweisungen:

Code:
...
insert into ABO values ('A09', 'K04', 'Z01', 'V04');
insert into ABO values ('A10', 'K05', 'Z03', 'V06');
INSERT 0 1
ERROR:  value "036211044478" is out of range for type integer
LINE 1: ...a', 'Schmidt', 'Lindenstraße 20', 99867, 'Gotha', '036211044...
                                                             ^
ERROR:  value "03691993446" is out of range for type integer
LINE 1: ...', 'Meyer', 'Hauptstrasse 11', 99817, 'Eisenach', '036919934...
                                                             ^
ERROR:  value "03621552298" is out of range for type integer
LINE 1: ...ig', 'Schulze', 'Linke Gasse 3c', 99867, 'Gotha', '036215522...
                                                             ^
INSERT 0 1
ERROR:  value "03691858328" is out of range for type integer
LINE 1: ...rnd', 'Kluge', 'Hutweide 43a', 99817, 'Eisenach', '036918583...
                                                             ^
INSERT 0 1
INSERT 0 1
ERROR:  value "03691478982" is out of range for type integer
LINE 1: ...iedrich', 'Bruchtaler Weg 12', 99817, 'Eisenach', '036914789...
                                                             ^
ERROR:  value "03619962358" is out of range for type integer
LINE 1: ...', 'Winter', 'Alte Strasse 62c', 99084, 'Erfurt', '036199623...
                                                             ^
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
ERROR:  insert or update on table "abo" violates foreign key constraint "abo_kid_fkey"
DETAIL:  Key (kid)=(K02                 ) is not present in table "kunden".
ERROR:  insert or update on table "abo" violates foreign key constraint "abo_kid_fkey"
DETAIL:  Key (kid)=(K03                 ) is not present in table "kunden".
INSERT 0 1
INSERT 0 1
INSERT 0 1
ERROR:  insert or update on table "abo" violates foreign key constraint "abo_kid_fkey"
DETAIL:  Key (kid)=(K04                 ) is not present in table "kunden".
ERROR:  insert or update on table "abo" violates foreign key constraint "abo_kid_fkey"
DETAIL:  Key (kid)=(K04                 ) is not present in table "kunden".
ERROR:  insert or update on table "abo" violates foreign key constraint "abo_kid_fkey"
DETAIL:  Key (kid)=(K04                 ) is not present in table "kunden".
INSERT 0 1

Du suchst, wenn ich es richtig verstehe, dies:

Code:
postgres=# select kid, sum(z.preis) from abo left join zeitschrift z on abo.zid=z.zid group by kid having sum(z.preis) > 3;
         kid          | sum 
----------------------+-----
 K01                  | 4.3
 K08                  | 6.8
(2 rows)

Die Wahl Deiner Datentypen ist teilweise grundfalsch: eine PLZ wie auch eine Telefonnummer kann eine führende 0 enthalten, ein INTEGER schneidet diese ab, geb_datum als Text ist auch grundfalsch, wie speicherst Du 4,5% Provision?
 
ich dachte eben weil es sonderzeichen enthält und keine reiner wert, es als char abzuspeichern, zumindest war das mein Gedankengang
 
wie speicherst Du 4,5% Provision?
ich dachte eben weil es sonderzeichen enthält und keine reiner wert
PROVISION_IN_PROZENT INTEGER,
Du hast sogar in Deinem Feldnamen stehen, dass die Provisionsangabe in Prozent erfolgt.
Die Einheit speicherst Du dabei natürlich nicht mit, bei jeder Verarbeitung des "reinen Wertes" müsstest Du Textoperationen vornehmen, die umständlich sind, aber letztlich immer das gleiche tun, ein Prozentzeichen entfernen.
Wenn Du den Typ von Ganzzahl auf Fließkommazahl änderst und beim Speichern dann auch den Typ bedienst (also die Prozentangabe und Anführungszeichen weg lässt) ist alles gut.

Eine Datenbank ist nicht Excel, es gibt keine "Komfortfunktionen", die 85 % Deiner Eingaben mit einer mehr oder weniger smarten Zwischenverarbeitung aufbereiten oder formatieren.
 
Vor allem ist das eine relativ leichte Aufgabe, vielleicht mal von HAVING abgesehen. Du hast allerdings nicht mal einen Join geschafft geschweige denn (korrekt) gruppiert. Da scheinen große Lücken in den absoluten Grundlagen für die Aufgabe zu bestehen.
 
Werbung:
Zurück
Oben