Oladapo,

Following Rafal's suggestion, I've tried this and it worked like a charm:

DELETE Customers, orderdetails, orders FROM
Customers, orderdetails, orders
WHERE Customers.customerid =20 AND
orders.CustomerID =20 and
orderdetails.orderid=orders.OrderId;

Thank you

----- Original Message -----
From: "Oladapo Carew" <[EMAIL PROTECTED]>
To: "Anibal Cascais Santos" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Thursday, June 20, 2002 4:45 PM
Subject: RE: multi-table delete


>
> I think you have to specify the join from the customers table to the other
> tables ..
>
> -----Original Message-----
> From: Anibal Cascais Santos [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, June 20, 2002 3:38 PM
> To: [EMAIL PROTECTED]
> Subject: multi-table delete
>
>
> Hi,
>
> I'm rather new to mySQL, so maybe that's the problem, but here it goes:
> I'm using version 4.0.1 alpha-max-nt running on W2k server
> the tables I'm using
>
>     CREATE TABLE `customers` (
>   `CustomerID` int(11) NOT NULL auto_increment,
>   `FullName` varchar(50) default NULL,
>   `EmailAddress` varchar(50) default NULL,
>   `Password` varchar(50) default NULL,
>   PRIMARY KEY  (`CustomerID`)
> ) TYPE=MyISAM;
>
>     CREATE TABLE `orderdetails` (
>   `OrderID` int(11) NOT NULL default '0',
>   `ProductID` int(11) NOT NULL default '0',
>   `Quantity` int(11) default '0',
>   `UnitCost` decimal(19,4) default '0.0000',
>   PRIMARY KEY  (`OrderID`,`ProductID`)
> ) TYPE=MyISAM;
>
> CREATE TABLE `orders` (
>   `OrderID` int(11) NOT NULL auto_increment,
>   `CustomerID` int(11) default '0',
>   `OrderDate` datetime default '0000-00-00 00:00:00',
>   `ShipDate` datetime default '0000-00-00 00:00:00',
>   PRIMARY KEY  (`OrderID`)
> ) TYPE=MyISAM;
>
> I'm trying to delete Customer 19 and all related orders (in table orders
and
> orderdetails) in one statement (don't even know for sure if it's
possible).
> After reading the documentation I've come up with this:
>
> DELETE Customers, orderdetails, orders FROM
> Customers, orderdetails, orders
> WHERE Customers.customerid & orders.CustomerID =19;
>
> this deletes customer 19 from table Customer and all ocurrences of
customer
> 19 in table Orders.
> The problem is it also deletes ALL entries from table OrderDetails.
> I want to delete ONLY entries in table OrderDetails that don't have a
> corresponding ocurrence in table Orders, i.e., I need to check wich
orderID
> is present in Orderdetails table that don't exist in the Orders table and
> delete that (too confusing?).
> So, I've tried this
>
> DELETE Customers, orderdetails, orders FROM
> Customers, orderdetails, orders
> WHERE (Customers.customerid & orders.CustomerID =19)
> AND orders.OrderID <> orderdetails.OrderID;
>
> The result is the same: deletes all rows from OrderDetails.
> Don't really know what else to do...
>
> Really apreciate any help you can provide
>
> Thank you
> Aníbal
> --------------------------------------------------------------
> Anibal Cascais Santos
> www.engrenagem.net
> --------------------------------------------------------------
>
>
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
>


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to