On Thu, 08 Dec 2011 08:48:51 +0200, Andreas <maps.on@gmx.net> wrote:
> Hi,
>
> suppose you need to import a csv with standard ciolums like name,
> adress, phone, ... and some additional text columns that need to be
> split off into referenced tables.
>
> Those lookup-tables will only be needed for a project with limited life
> time so I create a schema that might be called "project_x". There I
> create the necessary lookup tables.
>
> The core of the import will be added to the customers table with
> unlimited livespan. The customers table has a PKey id which is a serial.
>
> I don't want to add FKey columns into customers for the new
> lookup-tables so I create another table in project_x "projectinfos" that
> stores those FKeys and another FKey that references customers.id.
>
> First question: Is this a stupid aproach?
It is logical to reduce dependency from the temporary schema to the
customer table which is on the permanent schema.
>
> If not:
> How is the easiest way to to find the customer.id of the new customers
> so I can insert the projectinfos?
>
It is easy to select rows not related with another table. One of the
following queries can be used.
> Select * from "customers" where id not in (select "customerId" from
> "projectinfos")
> Select * from "customers" left join "projectinfos" on "customers"."id" =
> "projectinfos"."customerId" where "projectinfos"."customerid" is null
> Select * from "customers" where not exists (select true from
> "projectinfos" where "customers".id = "customerId")