Re: SQL Join - MySQL/PostgreSQL difference? - Mailing list pgsql-sql
From | Brice Ruth |
---|---|
Subject | Re: SQL Join - MySQL/PostgreSQL difference? |
Date | |
Msg-id | 3A803D47.7D4C7079@webprojkt.com Whole thread Raw |
In response to | SQL Join - MySQL/PostgreSQL difference? (Brice Ruth <brice@webprojkt.com>) |
Responses |
Re: Re: SQL Join - MySQL/PostgreSQL difference?
|
List | pgsql-sql |
FYI: Here are the table definitions: CREATE TABLE TBLPEMDRUGLINK ( DRUGID VARCHAR(10) NOT NULL, MONOGRAPHID VARCHAR(10) NOT NULL, CONSTRAINT PK_TBLPEMDRUGLINK PRIMARY KEY (DRUGID, MONOGRAPHID) ); CREATE TABLE TBLFDBMONO ( VERSIONID VARCHAR(10) NOT NULL, CATEGORY VARCHAR(10) NOT NULL, MONOGRAPHID VARCHAR(10) NOT NULL, SEQUENCENUMBER SMALLINT NOT NULL, SECTIONCODE VARCHAR(1), LINETEXT VARCHAR(255), CONSTRAINT PK_TBLFDBMONO PRIMARY KEY (VERSIONID, CATEGORY, MONOGRAPHID, SEQUENCENUMBER) ); Running the following query: Query1: SELECT sequencenumber,sectioncode,linetext Query1: FROM tblfdbmono fdb, tblpemdruglink pem WHERE Query1: fdb.monographid=pem.monographid AND Query1: fdb.versionid='FDB-PE' AND Query1: fdb.category='PEM' AND Query1: pem.drugid='DG-5039'; returns 0 rows. However, the following two queries produce results: Query2: SELECT * FROM tblpemdruglink WHERE drugid='DG-5039'; Query3: SELECT * FROM tblfdbmono WHERE Query3: monographid='2008' AND Query3: versionid='FDB-PE' AND Query3: category='PEM'; To my knowledge, Query1 is the join that should produce the same results as the manual join represented by queries 2 & 3. What's going on? -Brice Ian Harding wrote: > > Brice Ruth wrote: > > > Greetings. > > > > I'm working with a product provided by a third part that interfaces to > > data housed in a database of your choice. Previously, my choice was > > MySQL - apparently it handled certain queries too slowly, so I'm giving > > PostgreSQL a shot. Here's the query: > > > > SELECT > > a.Number, > > a.Code, > > a.Text > > FROM > > b, > > a > > WHERE > > (b.Id = a.Id) AND > > (VersionId = 'key1') AND > > (Category = 'key2') AND > > (b.d_Id = 'key3') > > ORDER BY > > a.Number; > > > > (my apologies: I had to 'mangle' the table/column names because of NDA) > > > > So my question is this: would this query operate differently in MySQL > > than in PostgreSQL? The reason I ask is that this query in MySQL > > returns results, yet in PostgreSQL it does not. I read a post about > > PostgreSQL not supporting outer joins, but I don't have enough > > experience with SQL to determine if this is such a query or not. Please > > > > advise. > > > > Any help will be (as always) sincerely appreciated. > > > > -- > > Brice Ruth > > WebProjkt, Inc. > > VP, Director of Internet Technology > > http://www.webprojkt.com/ > > It should work the same in both. The only thing I notice is that not all > the field names are qualified with table names or aliases. That can lead > to ambiguity, but the query would blow up on both databases if that were a > problem. > > Ian -- Brice Ruth WebProjkt, Inc. VP, Director of Internet Technology http://www.webprojkt.com/