Re: [PHP] Can't postgres join tables on varchar fields ? - Mailing list pgsql-novice

From Josh Berkus
Subject Re: [PHP] Can't postgres join tables on varchar fields ?
Date
Msg-id web-270021@davinci.ethosmedia.com
Whole thread Raw
List pgsql-novice
Gurudutt,

As I suspected, your problem appears to be one of poor case conversion.
I'm leaving your tabledefs in the e-mail for list purposes; see my
comments at the bottom.

> CREATE TABLE "act_collectiontab" (
>         "collcode" integer DEFAULT
> nextval('act_collectiontab_collcode_s'::text) NOT NULL,
>         "invcode" character varying(25) DEFAULT '' NOT NULL,
>         "custcode" integer DEFAULT '0' NOT NULL,
>         "cableamount" double precision,
>         "internetamount" double precision,
>         "modemrental" double precision,
>         "colldate" date DEFAULT '0001-01-01' NOT NULL,
>         "advancecable" double precision,
>         "advanceinternet" double precision,
>         "modepay" character(1) DEFAULT '' NOT NULL,
>         "chequeddissuedate" date,
>         "chequeddno" character varying(50),
>         "chequeddbankname" character varying(100),
>         "depositbankcode" integer,
>         "otherbankname" character varying(100),
>         "chequebounced" character(1),
>         "validated" character(1) DEFAULT '' NOT NULL,
>         "validateddate" date DEFAULT '0001-01-01' NOT NULL,
>         Constraint "act_collectiontab_pkey" Primary Key ("collcode")
> );

> CREATE TABLE "act_invoicetab" (
>         "invnumber" character varying(25) DEFAULT '' NOT NULL,
>         "custcode" integer DEFAULT '0' NOT NULL,
>         "cableamount" double precision DEFAULT '0',
>         "internetamount" double precision DEFAULT '0',
>         "modemrental" double precision DEFAULT '0',
>         "invgendate" date DEFAULT '0001-01-01' NOT NULL,
>         "invfromdate" date DEFAULT '0001-01-01' NOT NULL,
>         "invtodate" date DEFAULT '0001-01-01' NOT NULL,
>         "internetadditional" double precision DEFAULT '0',
>         "totalamount" double precision DEFAULT '0',
>         "prevcabledues" double precision DEFAULT '0',
>         "previnternetdues" double precision DEFAULT '0',
>         "cableadvadj" double precision DEFAULT '0',
>         "internetadvadj" double precision DEFAULT '0',
>         "notv" integer DEFAULT '0',
>         "cablesubamount" double precision DEFAULT '0',
>         "nocomp" integer DEFAULT '0',
>         "internetacccharges" double precision DEFAULT '0',
>         "incrcode" integer,
>         Constraint "act_invoicetab_pkey" Primary Key ("invnumber",
> "custcode")
> );

> COPY "act_invoicetab"  FROM stdin;
> 2001Aug1        1       110     0       0       2001-09-05
> 2001-08-01      2001-08-31      0       110     0       0       0
> 0       1       110     0       0       10001426
> 2001Aug10       10      160     0       0       2001-09-05
> 2001-08-01      2001-08-31      0       160     0       0       0
> 0       1       160     0       0       10001435
> 2001Aug100      100     160     0       0       2001-09-05
> 2001-08-01      2001-08-31      0       160     0       0       0
> 0       1       160     0       0       10001517
> 2001Aug101      101     160     0       0       2001-09-05
> 2001-08-01      2001-08-31      0       160     0       0       0
> 0       1       160     0       0       10001518
> 2001Aug102      102     160     0       0       2001-09-05
> 2001-08-01      2001-08-31      0       160     0       0       0
> 0       1       160     0       0       10001519
> 2001Aug103      103     160     0       0       2001-09-05

> COPY "act_collectiontab"  FROM stdin;
> 1       2001jun1034     1034    120     0       0       2001-08-01
> 0       0       C       0001-01-01                      1
> N       N       0001-01-01
> 2       2001jun1194     1194    120     0       0       2001-08-02
> 0       0       C       0001-01-01                      1
> N       N       0001-01-01
> 3       2001jun1189     1189    120     0       0       2001-08-02
> 0       0       C       0001-01-01                      1
> N       N       0001-01-01
> 4       2001jun1174     1174    120     0       0       2001-08-02
> 0       0       C       0001-01-01                      1
> N       N       0001-01-01
> 5       2001jun1175     1175    120     0       0       2001-08-02
> 0       0       C       0001-01-01                      1
> N       N       0001-01-01

So here's something I noticed immediately:
Invoicetab: 2001Aug110
Collectiontabl: 2001jun1175
The two tables are using a different case for the month name in the
invoice number.  As an example:

SELECT '2001Aug100' = '2001aug110'
---------
f

Also, the table columns you posted above do not quite match the query
you e-mailed earlier.

-Josh




______AGLIO DATABASE SOLUTIONS___________________________
                                       Josh Berkus
  Complete information technology      josh@agliodbs.com
   and data management solutions       (415) 565-7293
  for law firms, small businesses        fax 621-2533
    and non-profit organizations.      San Francisco

Attachment

pgsql-novice by date:

Previous
From: hodges@xprt.net
Date:
Subject: Re: Getting back the primary key after INSERT
Next
From: "Travis Hoyt"
Date:
Subject: views, with check option