Unix Technical Forum

ON in INNER JOIN depending on AS in CASE, How?

This is a discussion on ON in INNER JOIN depending on AS in CASE, How? within the MySQL forums, part of the Database Server Software category; --> Dear All, Could anybody help here? I have two tables (meetings and persons). The persons meet each other and ...


Go Back   Unix Technical Forum > Database Server Software > MySQL

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-28-2008, 11:29 AM
pim@impulzief.nl
 
Posts: n/a
Default ON in INNER JOIN depending on AS in CASE, How?

Dear All,

Could anybody help here?
I have two tables (meetings and persons).
The persons meet each other and their person_id will be stored in
meetings. I do not know what person is standing left or right
(random).

Now I want to see who Nick met yesterday. All personal information is
in table persons so I want to use INNER JOIN to collect the right
information. But what I write down below doesn't work

How could the following be done:

SELECT *,
CASE
WHEN person_left = 'Nick' THEN person_right_id
WHEN person_right = 'Nick' = THEN person_left_id
END AS person_id_to_get_more_info
FROM meetings INNER JOIN persons ON
persons.person_id=person_id_to_get_more_info


Anybody have a suggestion?


Pim Zeekoers

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-28-2008, 11:29 AM
Paul Lautman
 
Posts: n/a
Default Re: ON in INNER JOIN depending on AS in CASE, How?

pim@impulzief.nl wrote:
> Dear All,
>
> Could anybody help here?
> I have two tables (meetings and persons).
> The persons meet each other and their person_id will be stored in
> meetings. I do not know what person is standing left or right
> (random).
>
> Now I want to see who Nick met yesterday. All personal information is
> in table persons so I want to use INNER JOIN to collect the right
> information. But what I write down below doesn't work
>
> How could the following be done:
>
> SELECT *,
> CASE
> WHEN person_left = 'Nick' THEN person_right_id
> WHEN person_right = 'Nick' = THEN person_left_id
> END AS person_id_to_get_more_info
> FROM meetings INNER JOIN persons ON
> persons.person_id=person_id_to_get_more_info
>
>
> Anybody have a suggestion?
>
>
> Pim Zeekoers


With what you told us it is not possible to get the result that you want as
there appears to be no way to tell the date of the meetings.

This is actually a job that PROLOG excels at.


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 02-28-2008, 11:29 AM
ZeldorBlat
 
Posts: n/a
Default Re: ON in INNER JOIN depending on AS in CASE, How?

On Nov 6, 2:54 pm, p...@impulzief.nl wrote:
> Dear All,
>
> Could anybody help here?
> I have two tables (meetings and persons).
> The persons meet each other and their person_id will be stored in
> meetings. I do not know what person is standing left or right
> (random).
>
> Now I want to see who Nick met yesterday. All personal information is
> in table persons so I want to use INNER JOIN to collect the right
> information. But what I write down below doesn't work
>
> How could the following be done:
>
> SELECT *,
> CASE
> WHEN person_left = 'Nick' THEN person_right_id
> WHEN person_right = 'Nick' = THEN person_left_id
> END AS person_id_to_get_more_info
> FROM meetings INNER JOIN persons ON
> persons.person_id=person_id_to_get_more_info
>
> Anybody have a suggestion?
>
> Pim Zeekoers


What do you mean by "doesn't work?" It doesn't return what you think
it should? It gives a syntax error?

You have an extra = on this line:

WHEN person_right = 'Nick' = THEN person_left_id

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 02-28-2008, 11:29 AM
pim@impulzief.nl
 
Posts: n/a
Default Re: ON in INNER JOIN depending on AS in CASE, How?

On 6 nov, 21:43, ZeldorBlat <zeldorb...@gmail.com> wrote:
> On Nov 6, 2:54 pm, p...@impulzief.nl wrote:
>
>
>
>
>
> > Dear All,

>
> > Could anybody help here?
> > I have two tables (meetings and persons).
> > The persons meet each other and their person_id will be stored in
> > meetings. I do not know what person is standing left or right
> > (random).

>
> > Now I want to see who Nick met yesterday. All personal information is
> > in table persons so I want to use INNER JOIN to collect the right
> > information. But what I write down below doesn't work

>
> > How could the following be done:

>
> > SELECT *,
> > CASE
> > WHEN person_left = 'Nick' THEN person_right_id
> > WHEN person_right = 'Nick' = THEN person_left_id
> > END AS person_id_to_get_more_info
> > FROM meetings INNER JOIN persons ON
> > persons.person_id=person_id_to_get_more_info

>
> > Anybody have a suggestion?

>
> > Pim Zeekoers

>
> What do you mean by "doesn't work?" It doesn't return what you think
> it should? It gives a syntax error?
>
> You have an extra = on this line:
>
> WHEN person_right = 'Nick' = THEN person_left_id- Tekst uit oorspronkelijk bericht niet weergeven -
>
> - Tekst uit oorspronkelijk bericht weergeven -



That = should not be there no, sorry.

Is says there is no such column "person_id_to_get_more_info"


In other words I could also ask:

SELECT column1 AS helloHere FROM table1 INNER JOIN table2 ON
table2.hellotext=helloHere

I want to use the helloHere value to select the row from another
table.


Can that be done?


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 02-28-2008, 11:29 AM
Good Man
 
Posts: n/a
Default Re: ON in INNER JOIN depending on AS in CASE, How?

pim@impulzief.nl wrote in
news:1194382124.736645.40970@v29g2000prd.googlegro ups.com:


> In other words I could also ask:
>
> SELECT column1 AS helloHere FROM table1 INNER JOIN table2 ON
> table2.hellotext=helloHere
>
> I want to use the helloHere value to select the row from another
> table.


As far as I know, that cannot be done, the JOIN would have to be "ON
table2.hellotext=table1.column1" because the alias is really only used when
displaying the result - it's not changing the name of the column for the
rest of the query.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #6 (permalink)  
Old 02-28-2008, 11:29 AM
Good Man
 
Posts: n/a
Default Re: ON in INNER JOIN depending on AS in CASE, How?

Good Man <heyho@letsgo.com> wrote in
news:Xns99E14FCEBD54sonicyouth@216.196.97.131:

> pim@impulzief.nl wrote in
>> I want to use the helloHere value to select the row from another
>> table.


And if that's the case, then perhaps you should be using subqueries.

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #7 (permalink)  
Old 02-28-2008, 11:29 AM
ZeldorBlat
 
Posts: n/a
Default Re: ON in INNER JOIN depending on AS in CASE, How?

On Nov 6, 2:54 pm, p...@impulzief.nl wrote:
> Dear All,
>
> Could anybody help here?
> I have two tables (meetings and persons).
> The persons meet each other and their person_id will be stored in
> meetings. I do not know what person is standing left or right
> (random).
>
> Now I want to see who Nick met yesterday. All personal information is
> in table persons so I want to use INNER JOIN to collect the right
> information. But what I write down below doesn't work
>
> How could the following be done:
>
> SELECT *,
> CASE
> WHEN person_left = 'Nick' THEN person_right_id
> WHEN person_right = 'Nick' = THEN person_left_id
> END AS person_id_to_get_more_info
> FROM meetings INNER JOIN persons ON
> persons.person_id=person_id_to_get_more_info
>
> Anybody have a suggestion?
>
> Pim Zeekoers


How about this (untested):

SELECT p.*
FROM meetings
JOIN persons p
ON meetings.person_right_id = p.person_id
WHERE meetings.person_left = 'Nick'

UNION

SELECT p.*
FROM meetings
JOIN persons p
ON meetings.person_left_id = p.person_id
WHERE meetings.person_right = 'Nick'

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
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

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:09 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com