I wrote:
> # create test tables
> create table msg_main (mid int not null,name char(16),primary key(mid));
> create table msg_lang (mid int not null,lang char(2) not null,message
> text,primary key(mid,lang));

mid is a bad choice for column names, because it is a function... it is
however not an reserved keyword (in the version I am using, 3.23.39).

> # select best choice, order of preferred language is: 'en','se','no'
> select msg_lang.message
>   from msg_main
>   left join msg_lang on
>     msg_lang.mid=msg_main.mid
>   left join msg_lang as unwanted on
>     unwanted.mid=msg_main.mid and
>     field(unwanted.lang,'en','se','no') <
>     field(msg_lang.lang,'en','se','no')
>   where name in ('welcome','goodbye') and isnull(unwanted.mid);

This won't work... sorry!

It worked with the test data, though... ;o)

This is version 1.1:

select name,msg_lang.message
  from msg_main
  left join msg_lang on
    msg_lang.mid=msg_main.mid and
    field(msg_lang.lang,'en','se','no') > 0
  left join msg_lang as unwanted on
    unwanted.mid=msg_main.mid and
    field(unwanted.lang,'en','se','no') > 0 and
    field(unwanted.lang,'en','se','no') <
    field(msg_lang.lang,'en','se','no')
  where name in ('welcome','goodbye') and
    msg_lang.lang in ('en','se','no') and
    isnull(unwanted.mid);

I think this is closer to something that may work. Note that you need to
insert your language preferences five places.

(There has _got_ to be an easier way...? For version 3.23 that is, I know
it's easier in 4.0)

Roger Baklund,
Mobiliant AS


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to