2 Joins with same table

20 views
Skip to first unread message

mifri...@gmail.com

unread,
Jul 26, 2016, 11:51:52 AM7/26/16
to ORMLite Users
Hi,

following scenario:

Table VideoserviceConnection has coloumns sinkService_id and sourceService_id, which are IDs to table Service. Service has the coloumn individual_id. I would like to join 2x service to the table VideoserviceConnection.

So I have the code:
QueryBuilder<VideoserviceConnection, Long> qb = videoserviceConnectionDAO.queryBuilder();
QueryBuilder<Service, Long> qbSinkService = serviceDAO.queryBuilder();
qbSinkService.where().eq("individual_id", individual.getId());
QueryBuilder<Service, Long> qbSourceService = serviceDAO.queryBuilder();
qbSourceService.where().ne("individual_id", individual.getId());
qb.join("sinkService_id", "id", qbSourceService);
qb.join("sourceService_id", "id", qbSourceService);


This throws
Ambiguous column name "ID"; SQL statement:
SELECT `videoserviceconnection`.* FROM `videoserviceconnection` INNER JOIN `service` ON `videoserviceconnection`.`sinkService_id` = `service`.`id` INNER JOIN `service` ON `videoserviceconnection`.`sourceService_id` = `service`.`id` WHERE `service`.`individual_id` <> 1 AND (`service`.`individual_id` <> 1 )  [90059-192]


The problem seems that ormlite didn't rename the service table, so it got problems in the WHERE-clause. It should be like

SELECT `videoserviceconnection`.* FROM `videoserviceconnection` INNER JOIN `service` sinkService ON `videoserviceconnection`.`sinkService_id` = `sinkService`.`id` INNER JOIN `service` sourceService ON `videoserviceconnection`.`sourceService_id` = `sourceService`.`id` WHERE `sinkService`.`individual_id` = 1 AND (`sourceService`.`individual_id` <> 1 ) (or similiar).

How can I achieve this?

Best regards,
Michael Fritscher

Reply all
Reply to author
Forward
0 new messages