MySQL Forums
Forum List  »  German

Re: DELETE
Posted by: Thomas Wiedmann
Date: December 17, 2012 12:30AM

Hallo Jörg,

> Ich kann mir mit
> SELECT *
> FROM kind k
> LEFT JOIN eltern e
> ON k.id=e.ide
> WHERE e.ide IS NULL;
> alle Kinder anzeigen lassen, die keine Eltern (mehr) haben.

Der SQL wäre aus meiner Sicht so korrekt (siehe JOIN)

SELECT * 
  FROM kind k 
  LEFT JOIN eltern e 
    ON k.elternid=e.ide 
 WHERE e.ide IS NULL; 
+----+----------+------+
| id | elternId | ide  |
+----+----------+------+
|  3 |        3 | NULL |
+----+----------+------+
1 row in set (0.00 sec)

mysql>


> Ist JOIN in DELETE unzulässig?

Im Standard SQL ist im DELETE kein JOIN vorgesehen nur MySQL hat mal wieder eine Sonderlösung erfunden.


>Und wie bekomme ich denn die elternlosen Kinder weg?

Eventuell so...
DELETE
  FROM kind 
 WHERE elternid NOT IN ( SELECT ide FROM eltern )
Query OK, 1 row affected (0.02 sec) 

mysql> select * from kind;
+----+----------+
| id | elternId |
+----+----------+
|  1 |        1 |
|  2 |        2 |
+----+----------+
2 rows in set (0.00 sec)

mysql>

Hinweis:
Mit einem FOREIGN KEY Constraint kann verhindert werden, dass solche Datensätze überhaupt angelegt werden können.

Grüße
Thomas

Options: ReplyQuote


Subject
Views
Written By
Posted
1671
December 13, 2012 05:17PM
769
December 15, 2012 02:47PM
804
December 15, 2012 06:36PM
Re: DELETE
770
December 17, 2012 12:30AM
782
December 17, 2012 02:30PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.