Bluehost.com Web Hosting $6.95

too smart for my present sql knowledge... need advice

This is a discussion on too smart for my present sql knowledge... need advice within the MySQL Database forums, part of the Database Forums category; I have 2 tables 'users' and 'relationships' I am doing the following select : SELECT relationships.friend_id, relationships.befriender_id, myfriends.pseudo, ...


Go Back   Usenet Forums > Database Forums > MySQL Database

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-23-2007
Josselin
 
Posts: n/a
Default too smart for my present sql knowledge... need advice

I have 2 tables 'users' and 'relationships'

I am doing the following select :

SELECT relationships.friend_id, relationships.befriender_id,
myfriends.pseudo, friendof.pseudo
FROM relationships
INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22


so I get 2 id's and 2 pseudo's *in 2 columns *'myfriends.pseudo'
et**'friendof.pseudo'

relationships.friend_id relationships.befriender_id myfriends.pseudo
friendof.pseudo
81 22 * jece867 aabe307
28 22 * pige540 aabe307
88 22 * cin82 aabe307
31 22 * crece705 aabe307
26 22 * crome324 aabe307
22 11 * aabe307 chege971
22 13 * aabe307 nade6
22 17 * aabe307 pres534
22 25 * aabe307 jond897


but I would like to get the following results after the query

contact_id contact_pseudo
81 jece867
28 pige540
88 cin82
31 crece705
26 crome324
11 chege971
13 nade6
17 pres534
25 jond897

is it possible ? how shoudl I rewrite my select ?

joss

Reply With Quote
  #2 (permalink)  
Old 02-23-2007
Paul Lautman
 
Posts: n/a
Default Re: too smart for my present sql knowledge... need advice

Josselin wrote:
> I have 2 tables 'users' and 'relationships'
>
> I am doing the following select :
>
> SELECT relationships.friend_id, relationships.befriender_id,
> myfriends.pseudo, friendof.pseudo
> FROM relationships
> INNER JOIN users AS myfriends ON relationships.friend_id =
> myfriends.id INNER JOIN users AS friendof ON relationships.
> befriender_id = friendof.id WHERE relationships.friend_id = 22 OR
> relationships.befriender_id = 22
>
> so I get 2 id's and 2 pseudo's in 2 columns 'myfriends.pseudo'
> et 'friendof.pseudo'
>
> relationships.friend_id relationships.befriender_id myfriends.pseudo
> friendof.pseudo
> 81 22 jece867 aabe307
> 28 22 pige540 aabe307
> 88 22 cin82 aabe307
> 31 22 crece705 aabe307
> 26 22 crome324 aabe307
> 22 11 aabe307 chege971
> 22 13 aabe307 nade6
> 22 17 aabe307 pres534
> 22 25 aabe307 jond897
>
>
> but I would like to get the following results after the query
>
> contact_id contact_pseudo
> 81 jece867
> 28 pige540
> 88 cin82
> 31 crece705
> 26 crome324
> 11 chege971
> 13 nade6
> 17 pres534
> 25 jond897
>
> is it possible ? how shoudl I rewrite my select ?
>
> joss


I haven't had a really good study, but at first glance it would seem that
you could do this by splitting the query into 2 and UNIONing them thus:

SELECT relationships.friend_id,
myfriends.pseudo
FROM relationships
INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22
UNION
SELECT relationships.befriender_id,
friendof.pseudo
FROM relationships
INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22


Reply With Quote
  #3 (permalink)  
Old 02-23-2007
Josselin
 
Posts: n/a
Default Re: too smart for my present sql knowledge... need advice

On 2007-02-23 14:04:49 +0100, "Paul Lautman"
<paul.lautman@btinternet.com> said:

> Josselin wrote:
>> I have 2 tables 'users' and 'relationships'
>>
>> I am doing the following select :
>>
>> SELECT relationships.friend_id, relationships.befriender_id,
>> myfriends.pseudo, friendof.pseudo
>> FROM relationships
>> INNER JOIN users AS myfriends ON relationships.friend_id =
>> myfriends.id INNER JOIN users AS friendof ON relationships.
>> befriender_id = friendof.id WHERE relationships.friend_id = 22 OR
>> relationships.befriender_id = 22
>>
>> so I get 2 id's and 2 pseudo's in 2 columns 'myfriends.pseudo'
>> et 'friendof.pseudo'
>>
>> relationships.friend_id relationships.befriender_id myfriends.pseudo
>> friendof.pseudo
>> 81 22 jece867 aabe307
>> 28 22 pige540 aabe307
>> 88 22 cin82 aabe307
>> 31 22 crece705 aabe307
>> 26 22 crome324 aabe307
>> 22 11 aabe307 chege971
>> 22 13 aabe307 nade6
>> 22 17 aabe307 pres534
>> 22 25 aabe307 jond897
>>
>>
>> but I would like to get the following results after the query
>>
>> contact_id contact_pseudo
>> 81 jece867
>> 28 pige540
>> 88 cin82
>> 31 crece705
>> 26 crome324
>> 11 chege971
>> 13 nade6
>> 17 pres534
>> 25 jond897
>>
>> is it possible ? how shoudl I rewrite my select ?
>>
>> joss

>
> I haven't had a really good study, but at first glance it would seem that
> you could do this by splitting the query into 2 and UNIONing them thus:
>
> SELECT relationships.friend_id,
> myfriends.pseudo
> FROM relationships
> INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
> INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
> WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22
> UNION
> SELECT relationships.befriender_id,
> friendof.pseudo
> FROM relationships
> INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
> INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
> WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22


thanks, I'll try.. in the meantime is it possible to use a conditional
select like that :

SELECT relationships.friend_id,
relationships.befriender_id,
relationships.connection_type,
relationships.activated_at,
myfriends.pseudo,
friendof.pseudo,

CASE relationships.friend_id = 22
WHEN 1THEN myfriends.pseudo
ELSE friendof.pseudo
END AS contact_pseudo,

FROM relationships
INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22


Reply With Quote
  #4 (permalink)  
Old 02-23-2007
Josselin
 
Posts: n/a
Default Re: too smart for my present sql knowledge... need advice

On 2007-02-23 14:04:49 +0100, "Paul Lautman"
<paul.lautman@btinternet.com> said:

> Josselin wrote:
>> I have 2 tables 'users' and 'relationships'
>>
>> I am doing the following select :
>>
>> SELECT relationships.friend_id, relationships.befriender_id,
>> myfriends.pseudo, friendof.pseudo
>> FROM relationships
>> INNER JOIN users AS myfriends ON relationships.friend_id =
>> myfriends.id INNER JOIN users AS friendof ON relationships.
>> befriender_id = friendof.id WHERE relationships.friend_id = 22 OR
>> relationships.befriender_id = 22
>>
>> so I get 2 id's and 2 pseudo's in 2 columns 'myfriends.pseudo'
>> et 'friendof.pseudo'
>>
>> relationships.friend_id relationships.befriender_id myfriends.pseudo
>> friendof.pseudo
>> 81 22 jece867 aabe307
>> 28 22 pige540 aabe307
>> 88 22 cin82 aabe307
>> 31 22 crece705 aabe307
>> 26 22 crome324 aabe307
>> 22 11 aabe307 chege971
>> 22 13 aabe307 nade6
>> 22 17 aabe307 pres534
>> 22 25 aabe307 jond897
>>
>>
>> but I would like to get the following results after the query
>>
>> contact_id contact_pseudo
>> 81 jece867
>> 28 pige540
>> 88 cin82
>> 31 crece705
>> 26 crome324
>> 11 chege971
>> 13 nade6
>> 17 pres534
>> 25 jond897
>>
>> is it possible ? how shoudl I rewrite my select ?
>>
>> joss

>
> I haven't had a really good study, but at first glance it would seem that
> you could do this by splitting the query into 2 and UNIONing them thus:
>
> SELECT relationships.friend_id,
> myfriends.pseudo
> FROM relationships
> INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
> INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
> WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22
> UNION
> SELECT relationships.befriender_id,
> friendof.pseudo
> FROM relationships
> INNER JOIN users AS myfriends ON relationships.friend_id = myfriends.id
> INNER JOIN users AS friendof ON relationships. befriender_id = friendof.id
> WHERE relationships.friend_id = 22 OR relationships.befriender_id = 22


WUNDEBAR... WONDERFUL ... thanks a lot.. you go it right....

joss

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 04:55 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0