[Code] Oracle SQL Funktion brauche Hilfe

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Phame, 11. April 2010 .

  1. 11. April 2010
    Oracle SQL Funktion brauche Hilfe

    Hi!

    Also ich häng jetzt schon eine lange Zeit an einer Prozedur/Funktion für folgende von mir erstellten Tabellen:

    Spoiler
    Code:
     
    drop table lieferung cascade constraint;
    drop table kunde cascade constraint;
    drop table artikel cascade constraint;
    drop table bestellung cascade constraint;
    
    
    create table kunde
    (
     id number(4) primary key,
     name varchar2(20),
     strasse varchar2(20),
     ort varchar2(20),
     plz number(4)
    );
    
    create table artikel
    (
     id number(4) primary key,
     bezeichnung varchar2 (25),
     farbe varchar2 (20),
     preis number(9,2) default 0
    );
    
    create table lieferung
    (
     id number(4) primary key,
     Datum date,
     lieferant varchar2(20),
     lieferung_artikel number(4) references artikel,
     anzahl number(4)
    );
    
    create table bestellung
    (
     id number(4) primary key,
     kundennr number(4) references kunde,
     artikelnr number(4) references artikel,
     anzahl number(4) default 1,
     bestelldatum Date
    );
    
    insert into artikel values (901, 'LCD TV', 'schwarz', 399.99);
    insert into artikel values (902, 'LCD TV', 'weiss', 379.99);
    insert into artikel values (903, 'Plasma TV', 'schwarz', 499.49);
    insert into artikel values (904, 'Plasma TV', 'weiss', 489.99);
    insert into artikel values (905, '22" TFT-Monitor', 'grau-silber', 299.99);
    insert into artikel values (906, '19" TFT-Monitor', 'schwarz', 129.99);
    insert into artikel values (907, 'PC-Maus', 'schwarz', 9.99);
    insert into artikel values (908, 'Tastatur', 'weiss', 12.99);
    insert into artikel values (909, 'USB-Stick 8GB', 'silber', 19.99);
    insert into artikel values (910, 'USB-Stick 16GB', 'silber', 37.49);
    insert into artikel values (911, 'USB-Stick 16GB', 'silber', 37.99);
    insert into artikel values (912, 'Tintenrucker', 'weiss-schwarz', 59.99);
    insert into artikel values (913, 'Laserdrucker', 'silber', 159.99);
    insert into artikel values (914, 'Externe Festplatte', 'silber', 79.99);
    insert into artikel values (915, 'USB-Kabel 1,8m', 'schwarz', 1.99);
    insert into artikel values (916, 'HDMI-Kabel', 'grau', 4.99);
    insert into artikel values (917, 'eSATA-Kabel', 'grau', 5.49);
    
    insert into lieferung values
    (1001, '09-JAN-2010', 'Lieferant1', 901, 20);
    insert into lieferung values
    (1002, '09-JAN-2010', 'Lieferant1', 902, 14);
    insert into lieferung values
    (1003, '12-JAN-2010', 'Lieferant2', 905, 20);
    insert into lieferung values
    (1004, '13-JAN-2010', 'Lieferant2', 906, 12);
    insert into lieferung values
    (1005, '13-JAN-2010', 'Lieferant1', 903, 37);
    insert into lieferung values
    (1006, '13-JAN-2010', 'Lieferant1', 904, 12);
    insert into lieferung values
    (1007, '13-JAN-2010', 'Lieferant1', 909, 37);
    insert into lieferung values
    (1008, '13-JAN-2010', 'Lieferant1', 910, 37);
    insert into lieferung values
    (1009, '15-JAN-2010', 'Lieferant2', 913, 37);
    insert into lieferung values
    (1010, '15-JAN-2010', 'Lieferant2', 908, 37);
    insert into lieferung values
    (1011, '15-JAN-2010', 'Lieferant1', 907, 37);
    insert into lieferung values
    (1012, '15-JAN-2010', 'Lieferant1', 914, 37);
    insert into lieferung values
    (1013, '16-JAN-2010', 'Lieferant1', 913, 37);
    insert into lieferung values
    (1014, '17-JAN-2010', 'Lieferant3', 915, 37);
    insert into lieferung values
    (1015, '17-JAN-2010', 'Lieferant3', 916, 37);
    insert into lieferung values
    (1016, '17-JAN-2010', 'Lieferant3', 903, 37);
    insert into lieferung values
    (1017, '17-JAN-2010', 'Lieferant3', 903, 37);
    
    insert into kunde values
    (3001, 'Silke Bach', 'Hauptstrasse 28', 'Prebl', 9441);
    insert into kunde values
    (3002, 'Peter Gärtner ', 'Staudgasse 25', 'Vöstenhof', 2630);
    insert into kunde values
    (3003, 'Ralf Diederich', 'Spittelwiese 45', 'Vogging', 4101);
    insert into kunde values
    (3004, 'Ines Kuster ', 'Holzschachen 51', 'Otting', 5751);
    insert into kunde values
    (3005, 'Marina Hirsch ', 'Hauptstrasse 51', 'Keindlau', 4343);
    insert into kunde values
    (3006, 'Birgit Vogler', 'Wachaustrasse 58', 'Weissenbach', 8940);
    insert into kunde values
    (3007, 'Mandy Koch', 'Weblinger Gürtel 46', 'Heiligenkreuz', 6060);
    insert into kunde values
    (3008, 'Sebastian Schuh', 'Hubatschstrasse 7', 'St.Jakob', 9433);
    
    insert into bestellung values
    (0001, 3001, 901, 1, '01-FEB-2010');
    insert into bestellung values
    (0002, 3001, 916, 6, '01-FEB-2010');
    insert into bestellung values
    (0003, 3003, 905, 3, '01-FEB-2010');
    insert into bestellung values
    (0004, 3006, 911, 8, '03-FEB-2010');
    insert into bestellung values
    (0005, 3004, 915, 3, '03-FEB-2010');
    insert into bestellung values
    (0006, 3008, 916, 1, '04-FEB-2010');
    insert into bestellung values
    (0007, 3003, 905, 4, '06-FEB-2010');
    insert into bestellung values
    (0008, 3007, 911, 2, '06-FEB-2010');
    insert into bestellung values
    
    
    
    select * from artikel;
    select * from kunde;
    select * from lieferung;
    select * from bestellung;
    
    

    Dazu brauch eine Prozedur, die von allen Bestellungen den Mittelwert ausrechnet

    und eine Funktion, die von einem Kunden die Bestellkosten ausrechnet, indem man ihr die Kundennummer mit gibt und dann einfach die Kosten von seinen Bestellungen addiert und dann 3,5EUR Versandkosten addiert und falls sie auf 2 Tage fallen eben 7EUR dazu zählt.


    Leider hab ich dabei größere Probleme es umzusetzen, da ich irgendwie daran häng wie ich jetzt von der Tabelle Bestellung den Preis mittels der Artikelnummer herüber bekomme.

    Mfg
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.