Professional Web Applications Themes

how to order, then limit, then order? - MySQL

Hello. I hope this question isn't too silly. I am working on a PHP/ mysql application that has a list of (scientific research) papers, a list of keywords, and a list that makes links between the two. What I'm trying to do is to show just the most popular keywords, and to show them in alphabetical order. My approach (illustrated at the end, with a query that workd) is to order by a count of use, and then to limit the results. But, as I imagine the clever folks who read this group will see quickly, the query leaves the ...

  1. #1

    Default how to order, then limit, then order?

    Hello. I hope this question isn't too silly. I am working on a PHP/
    mysql application that has a list of (scientific research) papers, a
    list of keywords, and a list that makes links between the two.

    What I'm trying to do is to show just the most popular keywords, and
    to show them in alphabetical order.

    My approach (illustrated at the end, with a query that workd) is to
    order by a count of use, and then to limit the results. But, as I
    imagine the clever folks who read this group will see quickly, the
    query leaves the keywords ordered by popularity.

    Q: is there a way that I can get Mysql to take the results of this
    query and then order them alphabetically, or should I be doing that in
    PHP? (I assume it would be faster to do it in mysql. And, I may as
    well admit it, I am enjoying learning mysql, so I'd like to get this
    task done in that domain instead of in PHP.)

    Many thanks, to anyone who is kind enough to offer some advice.

    Dan.

    THE QUERY IN QUESTION --


    SELECT Keyword, KeywordID, count( PaperID )
    FROM Papers_Keywords
    LEFT JOIN Keywords ON ( Keywords.id = Papers_Keywords.KeywordID )
    GROUP BY KeywordID
    ORDER BY count( Keyword ) DESC
    LIMIT 0 , 5;

    dankelley Guest

  2. #2

    Default Re: how to order, then limit, then order?

    On Sun, 22 Jul 2007 01:46:11 +0200, dankelley <Ca> wrote:
     


    SELECT * FROM (
    SELECT Keyword, KeywordID, count( PaperID )
    FROM Papers_Keywords
    LEFT JOIN Keywords ON ( Keywords.id = Papers_Keywords.KeywordID )
    GROUP BY KeywordID
    ORDER BY count( Keyword ) DESC
    LIMIT 5;
    ) ORDDER BY Keyword

    --
    Rik Wasmus
    Rik Guest

  3. #3

    Default Re: how to order, then limit, then order?

    Thanks very much, Rik. It turns out that I also needed an "As"
    clause. So, for anyone who has come upon this thread because they
    were having a similar problem, the full, working answer is as follows.

    SELECT *
    FROM (

    SELECT Keyword, KeywordID, count( PaperID )
    FROM Papers_Keywords
    LEFT JOIN Keywords ON ( Keywords.id = Papers_Keywords.KeywordID )
    GROUP BY KeywordID
    ORDER BY count( Keyword ) DESC
    LIMIT 0 , 5
    ) AS TopKeywords
    ORDER BY Keyword
    LIMIT 0 , 30;

    dankelley Guest

Similar Threads

  1. Tab Order always greyed out, need to redefine order but can't
    By Dominic_De_Lello@adobeforums.com in forum Adobe Acrobat Macintosh
    Replies: 5
    Last Post: July 14th, 05:06 AM
  2. Replies: 2
    Last Post: January 18th, 02:07 PM
  3. Updating records in order (into an order)
    By A Ratcliffe in forum ASP Database
    Replies: 7
    Last Post: October 24th, 06:19 PM
  4. Replies: 3
    Last Post: April 18th, 12:52 PM
  5. Replies: 0
    Last Post: April 15th, 01:22 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139