Daten aus Tabelle 1 sehen, die nicht in der 2. Tabelle sind

  • Daten aus Tabelle 1 sehen, die nicht in der 2. Tabelle sind

    ich habe folgende Tabellen

    CREATE TABLE Personal(
    Personal_nr int(12) NOT NULL,
    Vorname varchar (20) NOT NULL,
    Name varchar (25) NOT NULL,
    Strasse varchar (30) NOT NULL,
    PLZ int (5) unsigned zerofill NOT NULL,
    Ort varchar (20 ) NOT NULL,
    Geburt Date NOT NULL,
    Geschlecht varchar (1) NOT NULL,
    Gehalt int(8 ) NOT NULL
    );

    INSERT INTO `personal` VALUES (1002, 'Kai', 'Müller', 'Hallesche Str. 16', 04838, 'Eilenburg', '1951-12-28', 'm', 3400);
    INSERT INTO `personal` VALUES (1005, 'Ede', 'Pfau', 'Nicolaiplatz 2', 04232, 'Leipzig', '1952-08-02', 'm', 4500);
    INSERT INTO `personal` VALUES (1008, 'Eike', 'Taro', 'Bahnstr. 6', 60589, 'Frankfurt', '1947-08-12', 'm', 5100);
    INSERT INTO `personal` VALUES (1100, 'Kerstin', 'Ganz', 'Hauptstr. 10', 04838, 'Eilenburg', '1961-03-19', 'w', 6000);
    INSERT INTO `personal` VALUES (1101, 'Günter', 'Maus', 'Bergstr. 5', 06108, 'Halle/Saale', '1948-12-21', 'm', 4500);
    INSERT INTO `personal` VALUES (1112, 'Hannes', 'Heik', 'Weimarer Str. 21', 60589, 'Frankfurt', '1961-02-06', 'm', 5600);
    INSERT INTO `personal` VALUES (1113, 'Karsten', 'Müller', 'Wilhelm Str. 3', 60589, 'Frankfurt', '1963-06-24', 'm', 3400);
    INSERT INTO `personal` VALUES (1114, 'Torsten', 'Mieder', 'Hauptstr. 16', 04838, 'Eilenburg', '1963-12-07', 'm', 5400);
    INSERT INTO `personal` VALUES (1429, 'Christine', 'Schwarz', 'Tal Str. 56', 60589, 'Frankfurt', '1971-05-05', 'w', 5420);
    INSERT INTO `personal` VALUES (1430, 'Birgit', 'Gense', 'Bauernkoppel 39', 22393, 'Hamburg', '1948-04-24', 'w', 1200);
    INSERT INTO `personal` VALUES (1431, 'Bernd', 'Jach', 'Suelldorfer Str.', 22589, 'Hamburg', '1958-01-13', 'm', 2455);
    INSERT INTO `personal` VALUES (1432, 'Silvia', 'Munter', 'Treppe 7', 22587, 'Hamburg', '1959-05-10', 'w', 4555);
    INSERT INTO `personal` VALUES (1439, 'Karl', 'Seppa', 'Heimatring 7', 60589, 'Frankfurt', '1966-01-29', 'm', 3400);


    create Table Teilnehmer (
    Laufende_nr int(10) NOT NULL,
    Personal_nr int(12) NOT NULL,
    Besucht varchar (4)NOT NULL
    );


    INSERT INTO `teilnehmer` VALUES (1, 1002, 'Ja');
    INSERT INTO `teilnehmer` VALUES (1, 1017, 'Ja');
    INSERT INTO `teilnehmer` VALUES (1, 1101, 'Ja');
    INSERT INTO `teilnehmer` VALUES (1, 1005, 'Ja');
    INSERT INTO `teilnehmer` VALUES (2, 1114, 'Ja');
    INSERT INTO `teilnehmer` VALUES (2, 1439, 'Ja');


    CREATE TABLE Schulung(
    Laufende_nr int (10) NOT NULL,
    Schulungsbezeichnung varchar(32) NOT NULL,
    Kursbeginn DATE NOT NULL,
    Kursende DATE NOT NULL,
    Kurskosten int(6) NOT NULL,
    Veranstalter_nr int(10) NOT NULL
    );


    INSERT INTO `schulung` VALUES (1, 'ABA Schulung', '2006-03-14', '2005-03-15', 1600, 1);
    INSERT INTO `schulung` VALUES (2, 'Loborschulung 2', '2005-04-14', '2005-04-16', 2000, 4);
    INSERT INTO `schulung` VALUES (3, 'Teamtraining', '2005-04-07', '2005-04-08', 2100, 5);
    INSERT INTO `schulung` VALUES (4, 'Grundkurs Excel', '2005-11-25', '2005-11-26', 1200, 2);
    INSERT INTO `schulung` VALUES (5, 'Grundlagen Windows', '2005-12-13', '2005-12-13', 900, 3);
    INSERT INTO `schulung` VALUES (6, 'Grundkurs Word', '2005-12-14', '2005-12-15', 1800,4);
    INSERT INTO `schulung` VALUES (7, 'Grundkurs Powerpoint', '2006-01-04', '2006-01-04', 1200, 4);
    INSERT INTO `schulung` VALUES (8, 'Projektmanagement', '2005-11-07', '2005-11-07', 1549, 5);
    INSERT INTO `schulung` VALUES (9, 'Training Telefonmarketing', '2006-04-26', '2006-04-27', 2034, 5);
    INSERT INTO `schulung` VALUES (10, 'Personalplanung in der Praxis', '2005-09-03', '2005-09-04', 1220, 7);
    INSERT INTO `schulung` VALUES (11, 'Arbeitszeugnisse richtig formulieren und erfassen', '2005-09-18', '2005-09-19', 2440, 7);





    wenn ich mir die Mitarbeiter anzeigen lassen will, die an einer Schulung teilgenommen haben, dann mache ich das so

    SELECT Personal.*
    FROM `Personal` , `Schulung` , `Teilnehmer`
    WHERE Personal.Personal_nr = Teilnehmer.Personal_nr
    AND Teilnehmer.Laufende_nr = Schulung.Laufende_nr
    AND Teilnehmer.Besucht = 'Ja'

    /*Oder so*/

    SELECT *
    FROM `Personal` INNER JOIN `Teilnehmer` ON Personal.Personal_nr = Teilnehmer.Personal_nr
    WHERE Teilnehmer.Besucht = 'Ja'

    Nun will ich aber alle Leute mir anzeigen lassen, die nicht an einer Schulung teilgenommen haben, aber irgendwi klappt das nicht. Wie soll ich das jetzt machen. ich habe schon mit ungleich( <> != ) rumprobiert, komme aber nicht weiter.
  • Ich denke das ist die Lösung für dein Problem ;)

    Quellcode

    1. SELECT Personal.* FROM Personal
    2. LEFT JOIN Teilnehmer ON Personal.Personal_nr=Teilnehmer.Personal_nr
    3. WHERE Teilnehmer.Personal_nr IS NULL
    ~|__/
    ..o.o &lt;------------------- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world Domination.