Nevermind...

Just read an interesting comment in the MySQL online docs.

http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html

First user comment pointed me in the right direction.

Thanks for your help though. Much appreciated! (Especially when I
upgrade to 4.x)

--
Greg

On Tue, Jun 24, 2003 at 11:50:01AM -0500, Greg Klaus wrote:
> Jake,
> 
> Since I am running MySQL 3.23.5x, I cannot do subselects.
> 
> I am able to do the following:
> 
> SELECT * FROM Items_Pictures 
>    LEFT JOIN Items 
>       ON Items_Pictures.Items_ID = Items.Items_ID 
>    WHERE Items.Items_ID IS NULL;
> 
> *BUT*, if I try to do a DELETE instead
> 
> DELETE FROM Items_Pictures 
>    LEFT JOIN Items 
>       ON Items_Pictures.Items_ID = Items.Items_ID 
>    WHERE Items.Items_ID IS NULL;
> 
> I get:
> ERROR 1064: You have an error in your SQL syntax near 'LEFT JOIN Items
> ON Items_Pictures.Items_ID = Items.Items_ID WHERE Items.Items_ID'
> 
> I have a couple of databases I need to clean up this way manually.
> 
> Any help appreciated..
> 
> On Wed, Jun 18, 2003 at 10:10:57PM -0700, Jake Johnson wrote:
> > Hello Greg,
> > You are much better off using a not exists clause...
> > 
> > delete from child c
> > where not exists ( select 1 from parent p
> >                     where p.id = c.id)
> > 
> > 
> > 
> > Regards,
> > Jake Johnson
> > [EMAIL PROTECTED]
> > 
> > ------------------------------------------------------------------
> > Plutoid - http://www.plutoid.com
> > Shop Plutoid for the best prices on Rims and Car Audio Products
> > 
> > 
> > On Wed, 18 Jun 2003, Greg Klaus wrote:
> > 
> > > I am trying to delete some orphaned records in an old database on a
> > > website that I've recently taken over. Although the website is php
> > > driven, I am doing this manually in a mysql client.
> > >
> > > Mysql 3.23.54
> > >
> > > Tables:
> > >
> > > Items:
> > >    Items_ID
> > >    ....
> > >
> > > Pictures:
> > >    Picture_ID
> > >    Items_ID
> > >    ....
> > >
> > > I want to get rid of any entries in Pictures that are orphaned (No
> > > Items_ID in Items)
> > >
> > > Here is the query I'm trying to do, which I thought was correct,
> > > according to my surfing around google.
> > >
> > > DELETE FROM Pictures
> > >    WHERE Picture_ID IN
> > >    (
> > >       SELECT Pictures.Picture_ID FROM Pictures
> > >         LEFT JOIN Items using (Items_ID)
> > >   WHERE Items_ID IS NULL
> > >    )
> > >
> > > I also may have to do this in a 3 table scheme as well where the Cat_ID
> > > is gone and there are orphaned Items, which in turn means orphaned
> > > Pictures.
> > >
> > > Cats:
> > >    Cat_ID
> > >    ....
> > >
> > > Items:
> > >    Items_ID
> > >    Cat_ID
> > >    ....
> > >
> > > Pictures:
> > >    Picture_ID
> > >    Items_ID
> > >    ....
> > >
> > > Any help would be appreciated.
> > >
> > > Am I left to create a php script to do the cleaning for me or delete
> > > items individually?
> > >
> > > --
> > > Greg
> > > Nec Mors, Nec Requies. Carpe Noctum!
> > >
> > > --
> > > MySQL General Mailing List
> > > For list archives: http://lists.mysql.com/mysql
> > > To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> > >
> > 
> > -- 
> > MySQL General Mailing List
> > For list archives: http://lists.mysql.com/mysql
> > To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> 
> -- 
> Greg Klaus    -    [EMAIL PROTECTED]
> -------------------------------------
> TIMEatics 
>   web: http://www.timeatics.com
> voice: 785.456.7600
>   fax: 785.456.7601
>   aim: TIME Greg Klaus
> -=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-
> Nec Mors, Nec Requies. Carpe Noctum!
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

-- 
Greg Klaus    -    [EMAIL PROTECTED]
-------------------------------------
TIMEatics 
  web: http://www.timeatics.com
voice: 785.456.7600
  fax: 785.456.7601
  aim: TIME Greg Klaus
-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-
Nec Mors, Nec Requies. Carpe Noctum!

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to