moin!
Gelöscht werden soll aus der Tabelle users
wo die id
die gleiche ist wie in der Tabelle people
die uid
(Ist alles in MySQL)
Hier die Tabellen:
^^^^^^^^^^^^^^^^^^
mysql> SELECT * FROM users;
+----+-------+
| id | name |
+----+-------+
| 1 | lorem |
| 2 | ipsum |
| 3 | dolar |
| 4 | sit |
| 5 | amet |
+----+-------+
5 rows in set (0.00 sec)
mysql> SELECT * FROM people;
+----+-----+-----------+
| id | uid | name |
+----+-----+-----------+
| 1 | 3 | Benjamin |
| 2 | 4 | Mario |
| 3 | 5 | Lukas |
| 4 | 6 | Christoph |
| 5 | 7 | Alex |
+----+-----+-----------+
5 rows in set (0.00 sec)
Der INNER JOIN greift perfekt:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mysql> SELECT users.id AS users-id
, users.name AS users-name
, people.id AS people-id
,
people.uid AS people-uid
, people.name AS people-name
FROM users INNER JOIN people ON users.id = people.uid;
+----------+------------+-----------+------------+-------------+
| users-id | users-name | people-id | people-uid | people-name |
+----------+------------+-----------+------------+-------------+
| 3 | dolar | 1 | 3 | Benjamin |
| 4 | sit | 2 | 4 | Mario |
| 5 | amet | 3 | 5 | Lukas |
+----------+------------+-----------+------------+-------------+
3 rows in set (0.01 sec)
Hier kommt der ERROR
^^^^^^^^^^^^^^^^^^^^
mysql> DELETE FROM users INNER JOIN people ON users.id = people.uid;
ERROR 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 'INNER JOIN people ON users.id = people.uid' at line 1
mysql>
Das MySQL Manual für Delete
http://dev.mysql.com/doc/mysql/en/delete.html
gibt einen eigenartigen Sytax mit DELETE ... USING ... WHERE an
welcher mir aber ein Rätsel aufgibt zu verstehen.
Das Manual schreibt z.B.
DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
Eigentlich würde ich sofern es geht lieber mit JOIN's arbeiten
da mein obiger INNER JOIN die gewünschten Ergebnisse zurück gibt,
und genau diese gelöscht werden sollen.
Es soll sowohl mit INNER, als auch RIGHT OUTER und LEFT OUTER Join gehen.
Falls das mit JOIN's überhaupt nicht geht,
bitte ich um eine Erklärung wie es richtig geht.
Das englische Manual ist etwas schwer.
VLGVSB
Garwaniny