I am having a problem with setDistinctMode() in Transfer and am trying
to figure out the correct way to using distinct with joins.

I am running a query with TQL:

<cfset var qList = "" />
<cfset var tQuery = "" />

<cfsavecontent variable="qList">
<cfoutput>

        FROM tags.tag
        join bookmarks.bookmark as bookmark
        join bookmarklinks.bookmarklink as bookmarklink ON
bookmark.bookmarkLink
        join links.link as link ON bookmarklink.link
        WHERE link.userID = :userID

</cfoutput>
</cfsavecontent>

<cfset tQuery = variables.transfer.createQuery(qList) />
<cfset tQuery.setDistinctMode(true) />
<cfset tQuery.setParam("userID",arguments.userID) />
<cfreturn variables.transfer.listByQuery(tQuery) />

This creates SQL of:

select distinct tags.tagID, tags.tagTitle, bookmark.title,
bookmark.sortOrder, bookmark.status, bookmark.bookmarkID,
bookmarklink.linkNote, bookmarklink.linkTitle, bookmarklink.sortOrder,
bookmarklink.bookmarkLinkID, link.linkURL, link.linkTitle,
link.userID, link.linkID FROM tags inner join taglinks on
taglinks.tagID = tags.tagID inner join bookmarks bookmark ON
taglinks.bookmarkID = bookmark.bookmarkID inner join bookmarklinks
bookmarklink ON bookmark.bookmarkLinkID = bookmarklink.bookmarkLinkID
inner join links link ON bookmarklink.linkID = link.linkID WHERE
link.userID = '1'

Since I have the setDistinctMode(true) parameter, I was expecting to
get distinct tags. Instead, my query contains multiple references to
the same tagID

results:

id title
1 sports
3 funny
1 sports
1 sports
2 news

Sports should only be in the query once.

When I change the SQL to:

select distinct tags.tagID, tags.tagTitle FROM tags inner join
taglinks on taglinks.tagID = tags.tagID inner join bookmarks bookmark
ON taglinks.bookmarkID = bookmark.bookmarkID inner join bookmarklinks
bookmarklink ON bookmark.bookmarkLinkID = bookmarklink.bookmarkLinkID
inner join links link ON bookmarklink.linkID = link.linkID WHERE
link.userID = '1'

I run the query manually, without Transfer and then the results are:

id title
1 sports
3 funny
2 news

So, it works when I remove all the extra stuff that came before the
FROM.

Basically I'm asking... how can I do a distinctMode select while using
joins? When I use joins the extra:

bookmark.title, bookmark.sortOrder, bookmark.status,
bookmark.bookmarkID, bookmarklink.linkNote, bookmarklink.linkTitle,
bookmarklink.sortOrder, bookmarklink.bookmarkLinkID, link.linkURL,
link.linkTitle, link.userID, link.linkID

is added before the FROM, which causes the distinct not to work.
Simply removing these lines and using a regular SQL query works, but
surely there is a way to do this in Transfer?

All I want before FROM is:

select distinct tags.tagID, tags.tagTitle FROM

The other stuff causes the distinct not to work, but the joins are
required for getting the proper data. I just can't figure out how to
have Transfer let me still use the join without adding all of the
extra columns before FROM.

Thanks!
--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

You received this message because you are subscribed to the Google Groups 
"transfer-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to