SQL Aufgabe zum Wochenende...

phpecki

Grünschnabel
Hallo Gemeinde,
kleine Aufgabe für´s Wochenende... :)


Tabelle 'Referenz' Eintrag: 1,3,4,5
Tabelle 'Master' Eintrag : 1,2,3,4,5,6,7

Aufgabe: Query schreiben für...
select alle Einträge in Master, die NICHT in Referenz vorhanden sind!

Ergebnis: 2,6,7
Query dafür?

Gruß
eckiphp
 
Lösung 1:
Code:
SQL> SELECT *
  2  FROM   MASTER M
  3  WHERE  NOT EXISTS ( SELECT 1 FROM REFERENZ R WHERE R.ID = M.ID );

        ID
----------
         2
         6
         7

Lösung 2:
Code:
SQL> SELECT *
  2  FROM   MASTER
  3  MINUS
  4  SELECT *
  5  FROM   REFERENZ;

        ID
----------
         2
         6
         7

Lösung 3:
Code:
SQL> SELECT *
  2  FROM   MASTER
  3  WHERE  ID NOT IN ( SELECT ID FROM REFERENZ );

        ID
----------
         2
         6
         7

;-) Schönes WE! ;-)
 
Hi, Danke!
Nur, es funkt nicht. :-(

Lösung 3 sieht mir gut aus...
(Bei mir lauten die tables und Felder allerdings anders als im Beispiel!)

table: master_copy Feld: LeistungsNr int(8) Master
table ref_leistungsnr Feld: Ref_LeistungsNr int(8) Referenz

Analog zu Deinem Beispiel also...

SELECT LeistungsNr
FROM master_copy
WHERE LeistungsNr NOT IN
( SELECT Ref_LeistungsNr from ref_leistungsnr )

Ergebnis:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT Ref_LeistungsNr from ref_leistungsnr )' at line 1

Ersetze ich das in der Klammer mit '00000' funkts.
Der Select in der Klammer alleine funkts auch.

Also er macht den Select in der Klammer nicht sauber. Nur warum?


Analog dazu:
SELECT *
FROM master_copy as M
WHERE NOT EXISTS ( SELECT Ref_LeistungsNr FROM ref_leistungsnr as R
WHERE R.Ref_LeistungsNr = M.LeistungsNr );

Ergebnis:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS ( SELECT Ref_LeistungsNr FROM ref_leistungsnr as R WHERE

Schwerer als gedacht.. any hins?

Grüßle
 
Lösung 4:
Code:
SELECT ID
FROM Master
LEFT JOIN Referenz ON Master.ID = Referenz.ID
WHERE Referenz.ID IS NULL
Gruß hpvw
 
Hi,
Höchstwahrscheinlich, weil deine MySQL Version (noch) keine SubSelects unterstützt.
Entweder du baust das ganze um mit dem Schlüsselwort JOIN oder du installierst dir einen neuere Version von MySQL.

PS:
Wenn dir jemand bei Problemen helfen soll, kann man das auch n bissel besser schreiben ;)
 
Hallo!

@hpvw

Supi, läuft! :)


@niggo
never touch a running system...
sieht aber nach alter Version aus: Server: 4.0.18-nt

Wie denn beschreiben?


@ all

VIELEN DANK FÜR DIE SCHNELLE HIFE
War ja ein kurzes (Wahl-) Wochenende. :)

Gruß
 
Zurück