Thread: Equivalent for an Access query

Equivalent for an Access query

From
jpmarichal@infoacces.com (Juan Pablo Marichal Catalan)
Date:
I'm building a system to a contest. I have three tables: participantes (partakers), ordenes (orders) and productos
(products).Partakers on the contest introduce their id in an HTML form, then this calls a PHP to query the database and
returndata taken from the three tables. 

Using Microsoft Access, I get the SQL code for the query, then I copy it and paste it in my PHP code:

$result=pg_Exec($conn,"SELECT participantes.idven, participantes.nombreven, participantes.iding,
participantes.nombreing,participantes.empresa, ordenes.num_ordenuf, ordenes.factura_spasp, ordenes.factura_vad,
ordenes.fecha,ordenes.num_producto, productos.descripcion, ordenes.mayorista, productos.puntos, ordenes.cantidad,
[puntos]*[cantidad]AS Total FROM productos INNER JOIN (participantes INNER JOIN ordenes ON idven = participante) ON
idproducto= num_producto WHERE (((idven)="VHA1901081"))"); 

But Postgress don't accept the . operator, so it drops to me those nasty 'parse' error messages. I don't know if it's
onlydue to the . operator, or the use of upper case or what. How must I build the SQL query to be accepted by Postgress
andPHP? I'm drowning on it! 



______________________
Brotherly,
JPMarichal
jpmarichal@infoacces.com
ICQ# 17246887

Re: [SQL] Equivalent for an Access query

From
David Hartwig
Date:

Juan Pablo Marichal Catalan wrote:

> I'm building a system to a contest. I have three tables: participantes (partakers), ordenes (orders) and productos
(products).Partakers on the contest introduce their id in an HTML form, then this calls a PHP to query the database and
returndata taken from the three tables. 
>
> Using Microsoft Access, I get the SQL code for the query, then I copy it and paste it in my PHP code:
>
> $result=pg_Exec($conn,"SELECT participantes.idven, participantes.nombreven, participantes.iding,
participantes.nombreing,participantes.empresa, ordenes.num_ordenuf, ordenes.factura_spasp, ordenes.factura_vad,
ordenes.fecha,ordenes.num_producto, productos.descripcion, ordenes.mayorista, productos.puntos, ordenes.cantidad,
[puntos]*[cantidad]AS Total FROM productos INNER JOIN (participantes INNER JOIN ordenes ON idven = participante) ON
idproducto= num_producto WHERE (((idven)="VHA1901081"))"); 
>
> But Postgress don't accept the . operator, so it drops to me those nasty 'parse' error messages. I don't know if it's
onlydue to the . operator, or the use of upper case or what. How must I build the SQL query to be accepted by Postgress
andPHP? I'm drowning on it! 
>

This generally is not a good idea.    There are several syntax structures here which will give PostgreSQL trouble.
Suchas: 
    INNER JOIN  - syntax not supported yet
    [puntos]*[cantidad] -  PostgreSQL uses double quote as identified delimiters.

If you wish to continue down this path let me suggest a few items.

1.  set the query property to "snapshot"
2.  activate the CommLog in the driver.
3.  cut your statements out of the CommLog.

The MS Jet and the ODBC driver, PostgreSQL'ify them before they get to the server.

Hope this helps.








Re: [SQL] Equivalent for an Access query

From
Remigiusz Sokolowski
Date:
> $result=pg_Exec($conn,"SELECT participantes.idven,
> participantes.nombreven, participantes.iding, participantes.nombreing,
> participantes.empresa, ordenes.num_ordenuf, ordenes.factura_spasp,
> ordenes.factura_vad, ordenes.fecha, ordenes.num_producto,
> productos.descripcion, ordenes.mayorista, productos.puntos,
> ordenes.cantidad, [puntos]*[cantidad] AS Total FROM productos INNER
> JOIN (participantes INNER JOIN ordenes ON idven = participante) ON
> idproducto = num_producto WHERE (((idven)="VHA1901081"))");

should be

SELECT p1.idven, ......, o1.num_ordenuf, ........, p2.puntos, .....,
(p2.puntos*o1.cantidad) AS Total FROM
productos p2, ordenes o1, participantes p1 WHERE
p1.idven=o1.participante AND p1.idproducto=p2.num_producto AND
p1.idven='VHA1901081';

I could mistake at some fields, but syntax is ok.
    Rem

-------------------------------------------------------------------*------------
Remigiusz Sokolowski      e-mail: rems@gdansk.sprint.pl           * *
-----------------------------------------------------------------*****----------


Re: [SQL] Equivalent for an Access query

From
jpmarichal@infoacces.com (Juan Pablo Marichal Catalan)
Date:
It works. Thanks a lot, Sokolowski.


*********** REPLY SEPARATOR ***********

On 28/01/99, at 8:31 AM, Remigiusz Sokolowski wrote:

>> $result=pg_Exec($conn,"SELECT participantes.idven,
>> participantes.nombreven, participantes.iding, participantes.nombreing,
>> participantes.empresa, ordenes.num_ordenuf, ordenes.factura_spasp,
>> ordenes.factura_vad, ordenes.fecha, ordenes.num_producto,
>> productos.descripcion, ordenes.mayorista, productos.puntos,
>> ordenes.cantidad, [puntos]*[cantidad] AS Total FROM productos INNER
>> JOIN (participantes INNER JOIN ordenes ON idven = participante) ON
>> idproducto = num_producto WHERE (((idven)="VHA1901081"))");
>
>should be
>
>SELECT p1.idven, ......, o1.num_ordenuf, ........, p2.puntos, .....,
>(p2.puntos*o1.cantidad) AS Total FROM
>productos p2, ordenes o1, participantes p1 WHERE
>p1.idven=o1.participante AND p1.idproducto=p2.num_producto AND
>p1.idven='VHA1901081';
>
>I could mistake at some fields, but syntax is ok.
>    Rem
>
>-------------------------------------------------------------------*------------
>Remigiusz Sokolowski      e-mail: rems@gdansk.sprint.pl           * *
>-----------------------------------------------------------------*****----------

______________________
Brotherly,
JPMarichal
jpmarichal@infoacces.com
ICQ# 17246887