I don't know MySQL very well, but you can do this in MSSQL (and it might work in MySQL too):

<cfquery name="list_member_friends_a" datasource="members">
        SELECT cc.first_name as first_name, cc.last_name as last_name
        FROM tbl_member_core_contact cc
INNER JOIN tbl_member_friend_list fl ON cc.member_id = fl.fmember_id_b
WHERE (member_id_a = <cfqueryparam value="#myid#">)
        UNION ALL
        SELECT cc.first_name as first_name, cc.last_name as last_name
        FROM tbl_member_core_contact cc
INNER JOIN tbl_member_friend_list fl ON cc.member_id = fl.fmember_id_a
WHERE (member_id_b = <cfqueryparam value="#myid#">)
</cfquery>

HTH,
Carl

On 4/8/2011 10:55 AM, Jason King wrote:

Thanks guys. Lots of good advice.

I'm going to keep it simple and use a 2 column table.

member1 (int)
member2 (int)

The member who initiates the request would be member1 and their friend would be member2

In the way I'm looking at coding this, there will be a single entry for a connection between people.

So when a user's friend list is generated, I will need to query where member_id = member1 OR member_id = member2

This is because your member_id could be on either side depending on if the connection is one you initiated or the other member initiated.

In order to build the final friend's list, I'm going to do 3 queries.

First, I will query the friends table where member1 = member_id

Second, I will query the friends table where member2 = member_id

In both queries, the friend's id will be queries as friend_id

<cfquery name="list_member_friends_a" datasource="members">

SELECT member_id_b as friend_id

FROM tbl_member_friend_list
WHERE (member_id_a = <cfqueryparam value="#myid#">)

</cfquery>
<cfquery name="list_member_friends_b" datasource="members">

SELECT member_id_a as friend_id

FROM tbl_member_friend_list
WHERE (member_id_b = <cfqueryparam value="#myid#">)

</cfquery>


After this, I will union the two

<cfquery name="combine_friend_list" dbtype="query">
SELECT listA.friend_id
FROM list_member_friends_a
UNION ALL
SELECT listB.friend_id
FROM list_member_friends_b
</cfquery>

Then, now that I have a list of friend id's, I need to grab each friend's first and last name and create the final query that will be used to present the list.

<cfquery name="get_friend_names" datasource="members">
SELECT cc.first_name as first_name, cc.last_name as last_name
FROM tbl_member_core_contact as cc
INNER JOIN combine_friend_list as fl on cc.member_id = fl.friend_id

</cfquery>

Everything works except for the last query. It's not letting me do an inner join using the previous query as a table.. Ideas?
--
official tag/function reference: http://openbd.org/manual/
mailing list - http://groups.google.com/group/openbd?hl=en

--
official tag/function reference: http://openbd.org/manual/
mailing list - http://groups.google.com/group/openbd?hl=en

Reply via email to