ZFSL/MS/SQL/wikea

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
== '''Datenbank für die Auftragsverwaltung der wikea GmbH''' ==
 

Das Unternehmen WIKEA GmbH ist ein mittelständisches Industrieunternehmen, das auf die Produktion von Designer-Tischen ausgerichtet ist. Weiter vertreibt das Unternehmen hochwertige Möbel von führenden Lieferanten der Möbelbranche. In der folgenden Tabelle sind wichtige Unternehmensdaten zusammengefasst:

[[Bild:Wikea-unternehmen.gif]]

Zur Verwaltung der Aufträge liegt eine Datenbank mit der folgenden Tabellenstruktur vor:


[[Bild:Wikea-tabellenstruktur.gif]]


<code id="53a42d4f27f50" hidden>

CREATE TABLE artikel (
  ArtikelID int NOT NULL,
  Artikel varchar(50) NOT NULL,
  VKPreis double NOT NULL,
  PRIMARY KEY (ArtikelID)
) ;

INSERT INTO artikel (ArtikelID, Artikel, VKPreis) VALUES
(101002, 'Quadratischer Tisch', 75),
(101005, 'Rechteckiger Tisch', 899),
(101007, 'Couchtisch Umbria', 129),
(202019, 'Schreibtisch mit Schubladen', 681),
(202029, 'Sofa Palermo, grün', 1458),
(204123, 'Sessel Wien', 420),
(204127, 'Stuhl Sizilien', 100),
(204333, 'Arzneischrank', 98),
(204455, 'Kommode', 520);

CREATE TABLE auftrag (
  AuftragsID int NOT NULL,
  Auftragsdatum date NOT NULL,
  KundenID integer NOT NULL,
  PRIMARY KEY (AuftragsID),  
) ;


INSERT INTO auftrag (AuftragsID, Auftragsdatum, KundenID) VALUES
(1, '2010-10-12', 1),
(2, '2010-10-15', 14),
(3, '2010-10-15', 30),
(4, '2010-10-18', 58),
(5, '2010-10-18', 39),
(6, '2010-10-18', 1),
(7, '2010-10-19', 30),
(8, '2010-10-19', 46),
(9, '2010-10-19', 24),
(10, '2010-10-19', 30),
(11, '2011-02-03', 55),
(99, '2011-02-03', 30);


CREATE TABLE  auftragsposition (
  AuftragsID int NOT NULL,
  ArtikelID int NOT NULL,
  Anzahl int NOT NULL,
  PRIMARY KEY (AuftragsID,ArtikelID)
 
) ;


INSERT INTO auftragsposition (AuftragsID, ArtikelID, Anzahl) VALUES
(1, 101005, 1),
(1, 202029, 30),
(2, 101007, 2),
(3, 101005, 1),
(3, 101007, 20),
(3, 202019, 1),
(4, 202029, 1),
(4, 204123, 5),
(5, 204123, 40),
(5, 204455, 120),
(6, 204127, 1),
(7, 101005, 4),
(8, 202019, 10),
(8, 204127, 75),
(9, 204123, 1),
(9, 204455, 100),
(10, 101007, 45),
(11, 202029, 55),
(99, 101005, 2),
(99, 101007, 2333);

CREATE TABLE kunde (
  KundenID int NOT NULL,
  Name varchar(30) NOT NULL,
  PLZ varchar(5) NOT NULL,
  PRIMARY KEY (KundenID)

) ;



INSERT INTO kunde (KundenID, Name, PLZ) VALUES
(1, 'Möbelhaus Nord', '10125'),
(6, 'Meyer', '20115'),
(7, 'Schmid', '12345'),
(8, 'Schmidt', '14000'),
(9, 'Schmitt', '13000'),
(10, 'Schmied', '20115'),
(11, 'Müller', '80215'),
(12, 'Miller', '80000'),
(14, 'Hinz Möbelhaus', '12000'),
(15, 'Kunz', '12345'),
(16, 'Schlummer', '15010'),
(17, 'Grummel', '16010'),
(19, 'Gruber', '20500'),
(20, 'Schlotterbeck', '20134'),
(21, 'Schröder', '80000'),
(22, 'Schumann', '80100'),
(23, 'Meier', '80200'),
(24, 'Hoffmanns Möbelhaus', '20000'),
(25, 'Bäcker', '12345'),
(26, 'Becker', '20123'),
(28, 'Scharping', '80500'),
(29, 'Pohlke', '20500'),
(30, 'Müller-Lüdenscheid', '12345'),
(32, 'Lehmann', '80099'),
(33, 'Grabowski', '20010'),
(35, 'Landmann', '80000'),
(36, 'Konopke', '20000'),
(37, 'Wagner', '80999'),
(38, 'Mahler', '20500'),
(39, 'Schulte', '20200'),
(40, 'Obermeier', '12345'),
(42, 'Minsky', '10500'),
(43, 'Pawlow', '12000'),
(44, 'Murnau', '20123'),
(45, 'Brandt', '12345'),
(46, 'Hotel zur Eiche', '45250'),
(48, 'Minimarkt', '44787'),
(49, 'Domowina', '44787'),
(50, 'Handwerkerland', '47055'),
(51, 'Restaurant Oase', '45233'),
(52, 'Domspitzengalerie', '51200'),
(53, 'Oskars Hotel', '60123'),
(54, 'Möbel Hellstern', '88353'),
(55, 'Lösken Massivmöbel', '45234'),
(56, 'Rosis Möbelstube', '41088'),
(57, 'Möbelstube GmbH', '40120'),
(58, 'Seidenweber & Co KG', '56206'),
(59, 'Kasimir', '12157'),
(60, 'Möbelhaus Meyer & Partner', '80123');


CREATE TABLE ort (
  PLZ varchar(5)NOT NULL,
  Ort varchar(50) NOT NULL,
  PRIMARY KEY (PLZ)
) ;



INSERT INTO ort (PLZ, Ort) VALUES
('10125', 'Berlin'),
('10500', 'Berlin'),
('12000', 'Berlin'),
('12157', 'Berlin'),
('12345', 'Berlin'),
('13000', 'Berlin'),
('14000', 'Berlin'),
('15010', 'Berlin'),
('16010', 'Berlin'),
('19339', 'Plattenberg'),
('20000', 'Hamburg'),
('20010', 'Hamburg'),
('20115', 'Hamburg'),
('20123', 'Hamburg'),
('20134', 'Hamburg'),
('20200', 'Hamburg'),
('20500', 'Hamburg'),
('40120', 'Düsseldorf'),
('41088', 'Mülheim'),
('44787', 'Bochum'),
('45233', 'Duisburg'),
('45234', 'Duisburg'),
('45250', 'Duisburg'),
('45721', 'Halern'),
('47055', 'Duisburg'),
('49179', 'Ostercappeln'),
('50668', 'Köln'),
('50733', 'Köln'),
('50735', 'Köln'),
('50999', 'Köln'),
('51103', 'Köln'),
('51143', 'Köln'),
('51200', 'Köln'),
('51373', 'Leverkusen'),
('51379', 'Leverkusen'),
('51465', 'Bergisch Gladbach'),
('51503', 'Rösrath'),
('52373', 'Leverkusen'),
('53332', 'Bornheim'),
('56206', 'Krefeld'),
('59302', 'Oelde'),
('60123', 'Frankfurt'),
('80000', 'München'),
('80099', 'München'),
('80100', 'München'),
('80123', 'München'),
('80200', 'Berlin'),
('80215', 'München'),
('80500', 'München'),
('80797', 'München'),
('80999', 'München'),
('86489', 'Deisenhausen'),
('88353', 'Kiülegg'),
('88376', 'Königseggwald'),
('95100', 'Selb'),
('96247', 'Michelau');



</code>
'''12	Auswahlabfragen'''
'''12.1	Auswahlabfragen vom Typ Projektion'''

- Es wird eine Liste mit allen Daten aus der Kundentabelle benötigt. 
 SELECT * FROM Kunde;

- Es wird eine Liste aller Kunden benötigt, die die Kundennummer und den Nachnamen enthält.
 SELECT KundenID, Nachname
 FROM Kunde;

- Es wird eine Liste aller Kunden benötigt, die die Kundennummer, den Nachnamen und den Vornamen enthält.
 SELECT KundenID, Nachname, Vorname
 FROM Kunde;

<run id="53a42c0a695d6"></run>


'''12.2	Auswahlabfragen vom Typ Selektion'''

- Es werden die Maße des Artikels 101002 gesucht.

<run id="53a42c0a6967b"></run>

- Es werden alle Artikel aus der Artikelgruppe 10 bis 30 gesucht. 
<run id="53a42c0a69732"></run>

- Es werden alle Aufträge der letzten 3 Tage gesucht
<run id="53a42c0a697ed"></run>


'''12.3	Auswahlabfragen mit Sortierung'''

-  Es wird eine Liste gewünscht, in welcher die Kundennummer und der Nachname des Kunden aufsteigend sortiert angezeigt werden

- Es wird eine Liste mit den Aufträgen benötigt, die absteigend nach den Auftragsnummern sortiert ist. 


'''12.4	Auswahlabfragen mit Bedingungen'''

- Es wird eine Übersicht über diejenigen Mitarbeiter gewünscht, die vor 1960 geboren sind.

- Es werden alle Kunden gesucht, die aus dem Postleitzahlbereich 4 kommen. 

- Es werden alle Kunden gesucht, deren Nachnamen mit „Schmi“ beginnen.


'''12.5	Abfragen mit Bereichsbeschränkungen (BETWEEN)'''

- Es werden alle Mitarbeiter gesucht, die zwischen 1970 und 1990 geboren sind. 

- Es werden alle Mitarbeiter gesucht, die zwischen 1980 und 1990 (einschließlich) geboren wurden.

- Es werden alle Mitarbeiter mit den Anfangsbuchstaben ‚'A' bis 'E' und   'K' bis  'M' gesucht. 


'''12.6	Abfragen mit Einschränkungen auf Listenwerte (IN)'''

- Im Lager werden alle Artikel gesucht, die eine Länge von 60, 80 bzw. 100 cm haben.


'''12.7	Abfragen mit zusammengesetzten Bedingungen (AND, OR)'''

- Es wird ein Kunde gesucht. Eine Telefonnotiz wurde irrtümlich zerrissen. Auf dem Papier sind vom Kunden  noch der Anfangsbuchstabe 'M' sowie ein Teil des Ansprechpartners „don“ zu erkennen. 

- Es werden alle Mitarbeiterinnen, die nicht aus dem Postleitzahlbereich „8“ sind, gesucht.

- Es werden alle Kunden aus den Postleitzahlbereichen „2“ und „5“ gesucht. 


'''12.8	Abfragen mit verneinten Bedingungen''' 

- Es werden alle Mitarbeiter gesucht, die nicht aus Köln kommen (Telefon-Vorwahl 0221). 

- Es werden alle Kunden gesucht, die keine Ansprechpartner haben. 


'''13	Abfragen über mehrere Tabellen (Join-Abfragen)'''

'''13.1	Inner-Join-Abfragen'''

- Es wird eine Liste aller Kunden benötigt. In dieser Liste soll zur besseren Übersicht neben der PLZ auch der Ort angeführt werden. 

- Es wird eine Liste mit allen Aufträgen der Kunden benötigt. 

- Es wird eine Liste aller Aufträge mit den jeweiligen Auftragspositionen benötigt. 


'''13.2	Outer-Join-Abfragen'''

- Es wird eine Liste aller Kundenaufträge benötigt. Dabei sollen auch die Kunden angezeigt werden, für die keine Aufträge vorliegen haben. 

- Es wird eine Liste mit den Artikeln der Artikelgruppen gewünscht. Dabei sollen auch die Artikelgruppen angezeigt werden, denen keine Artikel zugewiesen sind. 


''' 14	Abfragen mit Berechnungen'''

- Es wird eine Liste mit allen Aufträgen und Auftragspositionen gewünscht. Hierbei soll ne-ben der Anzahl und dem Verkaufspreis auch der Gesamtpreis ausgewiesen werden. 

- Es wird eine Mitarbeiterliste benötigt, die in einer zusätzlichen Spalte das Alter der Mitarbeiter anzeigt. 


'''15	Abfragen mit Gruppierungen'''

- Es wird eine Liste mit der Anzahl der Artikel je Artikelgruppe gewünscht. 

- Es wird eine Liste benötigt, die anzeigt, wie viele Kunden aus den einzelnen Postleitzahl-Gebieten stammen. Die Gebiete werden anhand der ersten zwei Stellen der Postleitzahl gruppiert. 

- Es wird eine Liste mit den Gesamtumsätzen der einzelnen Aufträge gewünscht.

- Es wird eine Liste mit den Umsätzen der einzelnen Kunden benötigt. 


'''15.1	Die COUNT()-Funktion'''

- Es wird die Anzahl der in der Datenbank verwalteten Kunden benötigt. 

- In der Tabelle Auftragsposition wird die Anzahl der Aufträge gesucht. 

- Es wird eine Liste mit den PLZ gesucht, aus denen die Kunden kommen


'''15.2	Die HAVING-Klausel'''

- Es wird eine Liste gesucht mit der Anzahl der männlichen und weiblichen Kunden aus München (PLZ 80000).

- Es wird eine Liste gesucht mit den PLZ der Orte, in denen mehr als zwei Kunden aus München (PLZ 80000) wohnen.

- Es sollen alle Artikelgruppen angezeigt werden, die mehr als zwei Artikel haben.

- Es wird eine Liste gesucht mit der Anzahl der männlichen und weiblichen Kunden aus München (PLZ 80000).

- Es wird eine Liste gesucht mit den PLZ der Orte, in denen mehr als zwei Kunden aus München (PLZ 80000) wohnen.

- Es sollen alle Artikelgruppen angezeigt werden, die mehr als zwei Artikel haben.

- Die Kundennummer sollen so umgestellt werden, dass unterschiedliche Nummernbereiche für Privatkunden und Geschäftskunden gebildet werden. Die vorhandenen Nummern der Geschäftskunden sollen dazu um 1000 erhöht werden.
 
- Alle Kunden aus dem Postleitzahlbereich 5 sollen aus dem Bestand gelöscht werden. 


<run id="53a41cd743eae" ></run>