SQL Mysql with clause

S

Sasku

Gast
Hey zusammen,

ich möchte mich gerade ein bisschen mit der WITH CLAUSE spielen, allerdings klappt das nicht so wie ich mir das Vorstelle.

Code:
WITH q AS
  ( SELECT JOBID
    FROM gpjob WHERE InstructorID = 30001 )
SELECT p.PNR
FROM gpperson p, gpjob j
WHERE p.JOBID in q;

.. das wäre eine ganz einfache Abfrage mit WITH. MYSQL meldet mir allerdings einen Synthax Fehler....


kann mir da jmd helfen?
Ergänzung ()

#1064 - 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 'q AS
( SELECT JOBID
FROM gpjob WHERE InstructorID = 30001 )
SELECT p.PN' at line 1

. das wäre die Fehlermeldung ... allerdings sagt die ja nur dass ein Syntax Fehler da ist ... ( PS für alle die wissen wollen welche MYSQL Version ich habe .. ich habe die ganz normale die es bei XAMPP dazu gibt..
 
AFAIK ist die WITH-Klausel eine Erweiterung von Oracle, die nicht zum SQL-Standard gehört und von MySQL nicht unterstützt wird.
 
NullPointer schrieb:
AFAIK ist die WITH-Klausel eine Erweiterung von Oracle, die nicht zum SQL-Standard gehört und von MySQL nicht unterstützt wird.

SQL Standard schon, aber SQL 99 nicht 92 und nicht von MySQL unterstützt, sonst kann es AFAIK fast jedes DBMS. Kannst du aber über Join / Subselect genauso lösen:
Code:
SELECT p.PNR
FROM gpperson p LEFT JOIN gpjob j ON p.jobid = j.jobid
WHERE InstructorID = 30001

oder

Code:
SELECT p.PNR
FROM gpperson p  
WHERE EXISTS (SELECT 1 FROM gpjob j
WHERE InstructorID = 30001  AND j.jobid = p.jobid)

(IN auf Subselects sollte man in MySQL möglichst vermeiden, deshalb das EXISTS)
 
Zurück
Oben