Markus,
Monday, March 18, 2002, 1:54:46 PM, you wrote:

ML> There -has- to be an easy solution to this, but I just can't for
ML> the world figure it out.

ML> I have a table called members(id,membernum,firstname,lastname)
ML> and a table called paid(id,membernum,year,paid).

ML> How on earth do I select the members in table members that are
ML> -NOT- in table paid?

ML> The members-table:

ML> mysql> SELECT * FROM members;
ML> +-------+----------+-----------+----------+
ML> | id    | membernr | firstname | lastname |
ML> +-------+----------+-----------+----------+
ML> | 00001 |    00001 | markus    | lervik   |
ML> | 00002 |    00002 | markuas   | asdff    |
ML> | 00003 |    00003 | test      | person   |
ML> +-------+----------+-----------+----------+


ML> ...and the paid-table:

ML> +-------+----------+------+------+
ML> | id    | membernr | year | paid |
ML> +-------+----------+------+------+
ML> | 00001 |        1 | 2000 | y    |
ML> | 00002 |        1 | 2001 | y    |
ML> | 00003 |        1 | 2002 | n    |
ML> | 00004 |        2 | 2002 | y    |
ML> | 00005 |        2 | 2003 | n    |
ML> +-------+----------+------+------+


ML> This is what I tried;

ML> SELECT m.membernum,m.firstname,m.lastname,p.year,p.paid
ML> FROM members AS m, paid AS p WHERE (m.membernum != p.membernum)

ML> which really doesn't produce the result I want:

ML> mysql> SELECT M.membernr,M.firstname,M.lastname,P.year,P.paid FROM
ML> members AS M, paid AS B WHERE M.membernr!=P.medlemsnr;
ML> +----------+-----------+----------+------+------+
ML> | membernr | firstname | lastname | year | paid |
ML> +----------+-----------+----------+------+------+
ML> |    00002 | markuas   | asdff    | 2000 | y    |
ML> |    00003 | test      | person   | 2000 | y    |
ML> |    00002 | markuas   | asdff    | 2001 | y    |
ML> |    00003 | test      | person   | 2001 | y    |
ML> |    00002 | markuas   | asdff    | 2002 | n    |
ML> |    00003 | test      | person   | 2002 | n    |
ML> |    00001 | markus    | lervik   | 2002 | y    |
ML> |    00003 | test      | person   | 2002 | y    |
ML> |    00001 | markus    | lervik   | 2003 | n    |
ML> |    00003 | test      | person   | 2003 | n    |
ML> +-----------+-----------+----------+------+-----+

ML> Which is quite logic when I came to think about it.

ML> One could, of course, smack a "AND m.membernr='3' "
ML> on the WHERE-clause, but it becomes a burden later
ML> if the member table grows large.

ML> I'm sure there -must- be a simple way to do this,
ML> and subselects spring to mind. 
ML> Perhaps it's just the coffeine that hasn't started 
ML> working yet (after about five cups <g>).

What about using JOIN clause?
SELECT members.* FROM members LEFT JOIN paid ON
members.membernr=paid.membernr WHERE paid.membernr IS NULL;

You can read about JOIN in MySQL documentation at:
    http://www.mysql.com/doc/J/O/JOIN.html

ML> Cheers,
ML> Markus




-- 
For technical support contracts, goto https://order.mysql.com/
This email is sponsored by Ensita.net http://www.ensita.net/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Victoria Reznichenko
 / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
/_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.net
       <___/   www.mysql.com




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