Your guess is correct, DISTINCT works on the result set - i.e. if the result
set contains two result rows that contain exactly the same values, it will
eliminate the duplicate from the result set.  SELECT DISTINCT is equivalent
with using a GROUP BY without an aggregate function.

SELECT DISTINCT x, y, z
Form Table

is equivalent with

SELECT x, y, z
FROM Table
GROUP BY x, y, z

HTH,
Tore.

----- Original Message -----
From: "Sheryl Canter" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; "Frank Peavy" <[EMAIL PROTECTED]>
Sent: Friday, February 28, 2003 11:50 AM
Subject: Re: SELECT DISTINCT question


> Frank,
>
> Sorry that I seem to be explaining this so poorly. I'll try to clarify
what
> I'm trying to do and what my questions are. Someone on this list did give
me
> code that I think will work. I haven't had a chance to try it yet.
>
> My question about how DISTINCT works is this: does it operate on the
*result
> set*? So depending on my SELECT statement and which fields I bring in,
> different rows may be distinct? It's my guess that it works this way. I
want
> to confirm.
>
> I certainly don't want to display the author's royalty percent on my Web
> site. I just want to use it to select the principle author, and display
the
> principle author's name with the program name. So I'll have:
>
> Program Name        Author        Description        Upload date
> ---------------------------------------------------------------------
> Program1                Smith
> Program2                Jones
> Program3                Harvey
>
> When more than one author works on a program, the royalty *percents* (not
> dollar values) will be apportioned according to their contributions to the
> project. On my Web site, I only want to display the name of the principal
> author--defined as the author who is paid the highest royalty percent *on
> that project*. Most projects will have only one author. A few will have
> multiple authors when someone had to take over the code or two programmers
> decided to collaborate.
>
> > Which is it, grouped by Program Id and ordered by royalty percent
> > Or
> > Just the Max in each group.....
>
> > You need to make up your mind....
>
> I don't think I'm having trouble making up my mind here--just having
trouble
> explaining my purpose. I think you can see now that I want to group by
> ProgramID and then find the highest royalty percent within that group so I
> can identify which author name to display.
>
> Thanks for your help.
>
>     - Sheryl
>
>
> ----- Original Message -----
> From: "Frank Peavy" <[EMAIL PROTECTED]>
> To: "Sheryl Canter" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> Sent: Friday, February 28, 2003 11:22 AM
> Subject: Re: SELECT DISTINCT question
>
>
> Sheryl,
> >I'm trying to determine which author has the highest royalty percent FOR
> >EACH PROGRAM, not overall. I'm displaying a list of programs and authors,
> >and when there is more than one author, I want to show the principal
author
> >(i.e., the one earning the highest royalty percent).
> Ok, so your desired result will look like... what???
> Program ID, Author, Royalty Amount
> 1, smith, $100
> 2, jones, $250
>
> Right? Ok, so what should your SELECT statement look like...?
> Shouldn't be too hard to figure out...
>
> > > Also, I don't think you want SELECT DISTINCT *
> > > I think SELECT DISTINCT a.AUTHOR, r.ROYALTIES.....   etc. is better
> >
> > > Also remember, a.AUTHOR will give you different results than
> >r.AUTHOR......
> >
> >How will the results differ?
> First of all, since you have tables, have you tried populating the tables
> with data. What did you get?
>
> >  I guess I'm not clear on how "DISTINCT" works.
> Think of DISTINCT as meaning unique.......
> Or, another way of looking at it, it answers the question, "what are the
> distinct (or unique) pieces of data in a column?".
>
> >Will it only look at combinations of a.AUTHOR and r.ROYALTIES if I write
it
> >that way?
> Yes, if you write it that way...
>
> Assuming Table a contains this:
> Author
> ----------
> Smith
> Jones
> Johnson
>
> Assuming Table r contains this:
> Author Royalties
> ------------------------
> Smith $100
> Johnson $100
>
> Based on the logic I described above, how do you think the queries results
> will differ, depending upon if I used Table a or Table b in my DISTINCT
> statement?
> SELECT DISTINCT a.Author, will resulting in:
> Smith
> Jones
> Johnson
>
> SELECT DISTINCT r.Author, will resulting in:
> Smith
> Johnson
>
> but... no Jones, because Jones has no record in Table b.....!!!!!!!!
> I will say it again, it answers the question, "what are the distinct (or
> unique) pieces of data in a column?".
>
> >I don't want all the authors in order of royalty percent. I want the them
> to
> >be in groups by Program ID and ordered by royalty percent within that (or
> >just take the max within each group).
> Which is it, grouped by Program Id and ordered by royalty percent
> Or
> Just the Max in each group.....
>
> You need to make up your mind....
>
>
>
>
>
> ---------------------------------------------------------------------
> 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
>


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