Re: [Zope] ZBabel translation to Postgres

2001-01-04 Thread Phil Harris

Olaf,

The left join is a notation that says to get all records from the left hand
side of the join and only those records where the criteria matches from the
right hand side.

It is btw a part of most RDBMS engines I've ever used, so it's not that
unusual a syntax.

You can also do something similar by using unions.

hth

Phil
[EMAIL PROTECTED]

- Original Message -
From: "Olaf Zanger" [EMAIL PROTECTED]
To: "Zope Mailinglist" [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Thursday, January 04, 2001 9:50 AM
Subject: [Zope] ZBabel translation to Postgres


 Hi there,

 i'm using ZPyGreSQL successfully for my database. To keep it simple i
 don't want to use MySQL for ZBabel.

 ZBabel though uses some MySQL specific syntax which i am unsuccessfully
 translating to PostgreSQL syntax:
 Description "md5Hash" are the same fore entries with different "lang"
 fields. They are used to translate depending on selected language.

 SELECT
 Phrases.*

 FROM
 Phrases

 LEFT JOIN
 Phrases as b

 ON
 Phrases.md5Hash = b.md5Hash AND Phrases.lang  b.lang

 WHERE
 b.md5Hash is NULL AND Phrases.lang=dtml-sqlvar srcLang type=nb

 What does the whole thing do anyway?
 How can you join "Phrases.md5Hash = b.mdf5Hash", while "md5Hash is
 NULL"?
 What is different in the LEFT JOIN ... ON ... statement to a normal
 WHERE clause?
 My try for translation to PostgreSQL (which I assume is completely
 ignorant):

 SELECT
 Phrases.*

 FROM
 Phrases as b

 WHERE
 Phrases.md5Hash *= b.md5Hash AND Phrases.lang  b.lang AND

 b.md5Hash is NULL AND Phrases.lang=dtml-sqlvar srcLang type=nb


 Has anybody ported ZBabel already?
 Thanks for help

 Olaf

 --
 soli-con Engineering Zanger
 Dipl.-Ing. (FH) Olaf Marc Zanger
 Lorrainestrasse 23
 3013 Bern / Switzerland
 Fon: +41-31-332 9782
 Mob: +41-76-572 9782
 mailto:[EMAIL PROTECTED]
 mailto:[EMAIL PROTECTED]
 http://www.soli-con.com


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [ZOPE] ZBabel translation to Postgres

2001-01-04 Thread Olaf Zanger

hi andrew,

thanks for the description. i figured it as far as that:

you need in postgresql (this is tested only from zope with zsql method,
since some other things don't work in the ZBabel Produkt with
postgresql):

sqlGetPhrasesToUpdate:
 
select distinct Phrases.*

WHERE md5Hash not in 
(
 select c.md5Hash
 from Phrases as c, Phrases as d
 where c.md5Hash = d.md5Hash and c.lang  d.lang and c.lang='dtml-var
srcLang'
)
and lang 'dtml-var srcLang'

sqlNewPhrase:

insert into Phrases (phrase_id,lang,md5Hash,renderPath,renderText)
values (
nextval('phrases_phrase_id_seq'),
dtml-sqlvar lang type=nb,
dtml-sqlvar md5Hash type=nb,
dtml-sqlvar renderPath type=nb,
dtml-sqlvar renderText type=nb
)

all other sqlFunctions seam to work (out of zope ZSQL method)

i attache the ZBabel.sql for postgres.
the examples are handgenerated so the hashes are fake.

TAKE CARE 
until now this just fakes the ability of ZBabel on Postgres on a ZSQL
Method level for testing purposes.

I get errors:
when i first want to view a page with the dtml-babel src=uk dst=de
test/dtml-babel

pg.error
error value: error: attribute 'phrases_phrase_id_seq' not found


probably that helps anybody

olaf



 | What does the whole thing do anyway?
 
 Finds all the phrases that don't have a translation for the language
 selected. It's hard to find things that don't exist in databases without
 nested selects which MySQL did not have at the time.
 
 MySQL was chosen precisely because it is restricted, and is basically the
 lowest common denominator when it comes to SQL.
 
 I do recall however, that postgres only implements INNER and OUTER joins
 although I don't know the status of the JOIN stuff in postgres at this time.
 
 | Has anybody ported ZBabel already?
 
 Someone was going to send me patches for postgres, but, I never received
 them.
 
 I'll happily integrate patches, although, automatically selecting the
 right query based on database type will be required so that several releases
 aren't required. I don't think that that's a hard thing to achieve.

-- 
soli-con Engineering Zanger
Dipl.-Ing. (FH) Olaf Marc Zanger
Lorrainestrasse 23
3013 Bern / Switzerland
Fon: +41-31-332 9782
Mob: +41-76-572 9782
mailto:[EMAIL PROTECTED]
mailto:[EMAIL PROTECTED]
http://www.soli-con.com
 phrases.sql

begin:vcard 
n:Zanger;Olaf Marc
tel;cell:+41-76-572 9782
tel;work:+41-31-332 9782
x-mozilla-html:FALSE
url:www.soli-con.com
org:soli-con Engineering Zanger
adr:;;Lorrainestrasse 23;Bern;BE;3013;Switzerland
version:2.1
email;internet:[EMAIL PROTECTED]
title:Dipl.-Ing.
note;quoted-printable:IT-Consulting=0D=0AEmbedded Systems=0D=0AEnergy Systems=0D=0AOpen Source Solutions=0D=0A
x-mozilla-cpt:;-32176
fn:Olaf Zanger
end:vcard



Re: [Zope] ZBabel translation to Postgres

2001-01-04 Thread Olaf Zanger

hi Phil,

 The left join is a notation that says to get all records from the left hand
 side of the join and only those records where the criteria matches from the
 right hand side.
 
 It is btw a part of most RDBMS engines I've ever used, so it's not that
 unusual a syntax.
 
 You can also do something similar by using unions.
thanks a lot for that,

do you have any suggestion (principally) how this union would look like

thanks

olaf

-- 
soli-con Engineering Zanger
Dipl.-Ing. (FH) Olaf Marc Zanger
Lorrainestrasse 23
3013 Bern / Switzerland
Fon: +41-31-332 9782
Mob: +41-76-572 9782
mailto:[EMAIL PROTECTED]
mailto:[EMAIL PROTECTED]
http://www.soli-con.com

begin:vcard 
n:Zanger;Olaf Marc
tel;cell:+41-76-572 9782
tel;work:+41-31-332 9782
x-mozilla-html:FALSE
url:www.soli-con.com
org:soli-con Engineering Zanger
adr:;;Lorrainestrasse 23;Bern;BE;3013;Switzerland
version:2.1
email;internet:[EMAIL PROTECTED]
title:Dipl.-Ing.
note;quoted-printable:IT-Consulting=0D=0AEmbedded Systems=0D=0AEnergy Systems=0D=0AOpen Source Solutions=0D=0A
x-mozilla-cpt:;-32176
fn:Olaf Zanger
end:vcard