Ask a Question related to Coldfusion Database Access, Design and Development.

  1. #1

    Default query of query

    My table consists of 3 columns:
    1) DrugName
    2) Dose
    3) DateTaken

    I want to be able to retrieve the most recent DateTaken for each different
    DrugName.

    For example:
    DrugName Dose DateTaken
    viagra 50 mg 01/14/2006
    viagra 100 mg 02/04/2006
    levitra 20 mg 11/05/2005
    levitra 10 mg 12/16/2005

    Running the query should yield ....
    viagra 100mg 02/04/2006
    levitra 10mg 12/16/2006

    I having trouble writing the SQL (still a newbie). Any help would be
    great!!!!!!!!

    -Gary

    cshow365 Guest

  2. Similar Questions and Discussions

    1. Query of Queries on query New type query
      In CF5 we have a page that creates a query, using queryNew and querySetCell and the like, we then used dbtype="query" and gave it's name so we could...
    2. query of query throwing weird exception
      One workaround: I had added rows to a cfsearch query, and set a numeric value in custom1 field that that query provides. A query of queries...
    3. Convert a query to a list, or find an item in a query
      Hi All, I am using CFPOP to retrieve mail from a server, then delete each message after I retrieve it. What I want to do is to check that I don;t...
    4. CAML Query: Multiple Query Fields Issue
      I need to Create a CAML Query Dynamically with VB to a Sharepoint WebService GetListItems Method. The User Could Select 1 to X Number of IDs...
    5. BCP query out executed by xp_cmdshell works fine from query analyzer but fails from VB Component
      Hi all, I have a stored procedure which returns a vast number of record and i have to write the output into a csv file. I'm using BCP utility to...
  3. #2

    Default Re: query of query

    I really don't undertand your logic here but assuming it's a typo and you
    really just want the results ordered by date in descending order:
    Assume your table is called something like DosageMonitor

    your SQL would look like this

    SELECT *
    FROM DosageMonitor
    ORDER BY DateTaken DESC


    However that would yield:
    viagra 100 mg 2/4/2006
    viagra 50 mg 1/14/2006
    levitra 10 mg 12/16/2005
    levitra 20 mg 11/5/2005

    not
    viagra 100mg 02/04/2006
    levitra 10mg 12/16/2006
    because the viagra doce was taken after the levitra one

    DogBot Guest

  4. #3

    Default Re: query of query

    Actually, my post is accurate.
    I only want one row returned per DrugName.

    Thanks for taking a shot anyway.

    -gary
    cshow365 Guest

  5. #4

    Default Re: query of query

    select drugname, max(datetaken)
    from dosagemonitor
    group by drugname
    Dan Bracuk Guest

  6. #5

    Default Re: query of query

    That almost got me there!

    I still need to retrieve the corresponding dose information though.
    I tried:
    SELECT DrugName, Dose, max(DateTaken) AS maxdate
    FROM drugs
    GROUP BY DrugName


    but I get the following error:

    Error Executing Database Query.
    You tried to execute a query that does not include the specified expression
    'Dose' as part of an aggregate function.

    The error occurred in C:\CFusionMX7\wwwroot\Project
    Alpha\Private\drugs\index.cfm: line 178

    176 : max(DateTaken) as MaxDate
    177 : FROM Drugs
    178 : WHERE UserID = #SESSION.auth.UserID#
    179 : GROUP BY DrugName
    180 : </cfquery>

    SQL SELECT DrugName, Dose, max(DateTaken) as MaxDate FROM Drugs WHERE
    UserID = 1 GROUP BY DrugName
    DATASOURCE drugs
    VENDORERRORCODE -3011
    SQLSTATE 42000



    cshow365 Guest

  7. #6

    Default Re: query of query

    Here is a reference on aggregating data.
    [url]http://www.comp.nus.edu.sg/~ooibc/courses/sql/dml_query_aggr.htm[/url]

    You have a syntax problem and a logic problem in your query. The syntax
    problem is described in your error message. You have a field in your select
    clause that is not in your group by clause.

    The logic problem is that by including the dose in your select clause, you are
    no longer going to get just one row per drug. You will get one row per
    combination of drug and dose.

    Dan Bracuk Guest

  8. #7

    Default Re: query of query

    use this query

    select drugname,dose,datetaken from test1 where DateTaken in (SELECT max(DateTaken) AS maxdate FROM test1 GROUP BY drugname)
    reenaroy Guest

  9. #8

    Default Re: query of query

    Something like this with a correlated subquery?

    SELECT d1.DrugName, d1.Dose, d1.DateTaken
    FROM drugs AS d1
    WHERE d1.DateTaken = (SELECT max(d2.DateTaken)
    FROM drugs d2
    WHERE d1.DrugName = d2.DrugName)

    Phil

    paross1 Guest

  10. #9

    Default Re: query of query

    That did it!
    Don't worry, I will go through Chapter 30 of Forta's book and master this stuff.

    Thank you!
    -Gary
    cshow365 Guest

Posting Permissions

  • You may not post new threads
  • You may 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