Search Postgresql Archives

Re: delete with self join

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



garry saddington wrote:
On Tue, 2007-04-17 at 09:21 +0100, Richard Huxton wrote:
garry saddington wrote:
I am trying this syntax which is my interpretation of the docs:

     delete from siblings s1 using siblings s2
        WHERE  s1.principal = s2.principal
              and s1.sibling=175

Can anyone tell me where I am going wrong?
1. What's happening - are you getting an error?
I am getting a syntax error (via psycopg) at or near s1 - perhaps this is a psycopg problem?
2. What is the query supposed to do? I can't see why you're not just doing:
DELETE FROM siblings WHERE sibling=175;


I am keeping a record of siblings in a school. The user chooses one
student and there siblings such that id's are entered into a table as
such:
TABLE SIBLINGS:

principal  sibling
  809         234
  809         785
  809         345
  809         809

What I am trying to do is to allow the user to correct input mistakes by
deleting all the siblings of one family at the same time by choosing
just one of the siblings. I hope this clears things up.

Ah, OK. The error then is that you're testing against s1.sibling not s2.sibling. "delete from siblings s1 ... and s1.sibling=175" which means you're not using s2 at all.

You might find it clearer with a subquery:
DELETE FROM siblings WHERE principal = (
	SELECT principal FROM siblings WHERE sibling=234
);


--
  Richard Huxton
  Archonet Ltd


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux