Donnerstag, 18. Dezember 2014

SQL Joins

Quelle: http://blog.danielschurter.net/wp-content/uploads/2012/12/sqljoins2.png


Quelle: http://i.stack.imgur.com/1UKp7.png

Komplexe SQL Select Statements


   SELECT   count(*) Anzahl
          , avg(Arbeitsstunden) durchschnittliche_Arbeitsstunden
   FROM Wartung;


    SELECT   Nachname, Vorname, Ort
      FROM Kunde
     WHERE Hobby in ('Karate', 'Fußball', 'Singen')
       AND Gehalt BETWEEN 40000 AND 70000
  ORDER BY   Nachname, Vorname;
      

  SELECT    Techniker.Nachname
          , Techniker.Vorname
          , count(*) Einsatz
          , avg (Arbeitsstunden) Durchschnitt
          , count(Distinct Ort) unterschiedliche_Orte
     FROM Kunde
     JOIN Waschmaschine
       ON Kunde.KundenNr = Waschmaschine.KundenNr
     JOIN Wartung
       ON Waschmaschine.SerienNr = Wartung.SerienNr
     JOIN Techniker
       ON Wartung.PersonalNr = Techniker.PersonalNr
 GROUP BY   Techniker.Nachname, Techniker.Vorname
   HAVING count(Distinct Ort) > 6;

Constraints Fremdschlüssel


ALTER TABLE Wartung
ADD CONSTRAINT FK_Wartung_Waschmaschine
       FOREIGN KEY (SerienNr)
       REFERENCES Waschmaschine (SerienNr);

ALTER TABLE Wartung
ADD CONSTRAINT FK_Wartung_Techniker
       FOREIGN KEY (PersonalNr)
       REFERENCES Techniker (PersonalNr);

SQL Statements



1.      Mitarbeiter > 50.000€
SELECT *
  FROM personal
 WHERE Gehalt > 50000;

2.      Mitarbeiter zw. 40.000€ - 50.000€
SELECT *
  FROM personal
 WHERE Gehalt >= 40000 AND Gehalt <= 50000;

3.      MA Nachname mit „H“
SELECT *
  FROM personal
 WHERE Name LIKE 'H%';

4.      MA wohnt in Duisburg und Essen
SELECT *
  FROM personal
 WHERE Wohnort LIKE 'Duisburg' OR Wohnort LIKE 'Essen';

5.      MA aus Essen < 42.000€
SELECT *
  FROM personal
 WHERE Wohnort LIKE 'Essen' AND Gehalt <= 42000;
KEIN ERGEBNIS!!!
6.      MA aus Duisburg in Abt. 2
SELECT *
  FROM personal
 WHERE Wohnort LIKE 'Duisburg' AND abtnr = 2;
WHERE Wohnort LIKE 'Duisburg' AND abtnr =2‘;
WHERE Wohnort LIKE 'Duisburg' AND abtnr LIKE ‚2‘; // Performance schelcht

7.      MA wohnt nicht in Stuttgart oder München
SELECT *
FROM personal 
WHERE NOT Wohnort LIKE 'Duisburg' AND NOT Wohnort LIKE 'München';