comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: gnade odbc and join tables
Date: Mon, 05 Jul 2010 22:35:00 +0200
Date: 2010-07-05T22:35:00+02:00	[thread overview]
Message-ID: <87zky5r7kb.fsf@ludovic-brenta.org> (raw)
In-Reply-To: 1265b06d-298d-4d1d-ae74-61262605262f@x27g2000yqb.googlegroups.com

tonyg writes on comp.lang.ada:
> I'm adapting the odbc demo in gnade to learn more about it. I want to
> be able to join tables and do a select according to the query string
> included in the code fragment.
> I 've modified the SQL prepare statement and here it is
>
>        Len             : aliased SQLINTEGER := 0; -- ignored for
> SQL_C_SLONG, if not negative
>  	 Len_Macid	 : aliased SQLINTEGER;
>          Macid           : aliased String := 16 * '.';
>          Planid          : aliased SQLINTEGER;
> 	 Len_Planid	 : aliased SQLINTEGER;
>          query_string 	 : String := "Select heater.macid, room.planid
> from heater" &
>          			"join room on heater.roomid = room.roomid order by
> room.planid";
>       begin
>          SQLAllocHandle (SQL_HANDLE_STMT, ConnectionHandle,
> StatementHandle);
>          SQLPrepare (StatementHandle,
>                     "SELECT " & QuoteIdentifier ("HEATER.MACID") & ",
> " &
>                        QuoteIdentifier ("ROOM.PLANID") & ", " &
>                      " FROM " & QuoteIdentifier ("HEATER") & " JOIN "
> &
>                      QuoteIdentifier("ROOM") & " " &
>                      "WHERE " & QuoteIdentifier ("HEATER.ROOMID") & "
> = " &
>                      QuoteIdentifier ("ROOM.ROOMID") &
>                        "ORDER BY " & QuoteIdentifier
> ("ROOM.PLANID") );
>
>          This is returning the following error when running
>
> raised GNU.DB.SQLCLI.SYNTAX_ERROR : [Proc=SQLBindCol][Server=x.x.x.x]
> [State=42000][MySQL][ODBC 3.51 Driver][mysqld-5.0.77]You have an error
> in your SQL syntax; check the manual that corresponds to your MySQL
> server version for th
>
> (ip address is x'ed out !)
>
> What am I doing wrong here - can anyone see?

IIRC, the proper syntax is INNER JOIN ... ON, not JOIN ... WHERE, i.e

SELECT heater.macid, room.planid
FROM heater INNER JOIN room ON heater.roomid = room.roomid
ORDER BY room.roomid

You miss the INNER keyword in both query_string and the argument to
SQLPrepare.  You use ON (correctly) in query_string but WHERE
(incorrectly) in the argument to SQLPrepare.

HTH

-- 
Ludovic Brenta.



  parent reply	other threads:[~2010-07-05 20:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-05 17:59 gnade odbc and join tables tonyg
2010-07-05 20:13 ` Georg Bauhaus
2010-07-05 20:35 ` Ludovic Brenta [this message]
2010-07-06  6:30   ` tonyg
2010-07-06  6:09 ` Stephen Leake
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox