Group:  Microsoft Access » microsoft.public.access.queries
Thread: query to pull records based of subquery column

Geek News

query to pull records based of subquery column
Mary 12/26/2008 2:09:00 PM
Hello all..
I am really really in need of a help.

I have a table and a query, table1 and query1. Query1 has the following
columns and rows:
ID Audit
223 2
234 3
225 1
226 2
The column ID is unique, have one record per row and data in column Audit
are not unique.

Here are the columns and rows for table 1. Records in column ID are unique
but can have more than one record per rows. Amt Type is grouped by Trans
type. Example, cash and visa are credit Trans type; where as, all MC and TC
are paytogo.

ID Amt Amt type Trans Type
223 1.50 cash credit
223 2.03 visa credit
223 2.30 MC paytogo
234 .50 TC paytogo
234 1.75 cash credit
234 .90 visa credit
234 5.30 visa credit
234 1.25 TC paytogo
225 1.35 MC paytogo
225 2.24 visa credit
225 3.35 MC paytogo
226 2.17 visa credit
226 1.15 TC paytogo
226 1.50 TC paytogo
226 1.60 visa credit

I would like a sql statement or know how to create a query that will look at
column Audit of query1 and pull that amount of records of table1. The result
should be listed by the top Amt for the records based on query1.Audit.


The result for this query should be as shown below. There are 3 records for
ID 234, 1 record for ID 225, 2 records for ID 223 and 2 records for ID 226.
ID Amt Amt type Trans Type
234 5.30 visa credit
234 1.25 TC paytogo
234 1.75 cash credit
225 3.35 MC paytogo
223 2.30 MC paytogo
223 2.03 visa credit
226 2.17 visa credit
226 1.60 visa credit

Any help will be greatly appreciated as this has been holding be back from
completing this project. I am opened to any direction. I think this is should
query1 should be joined as a subquery of table1.

Thanks a million in advance.

Re: query to pull records based of subquery column
John W. Vinson <jvinson[ at ]STOP_SPAM.WysardOfInfo.com> 12/26/2008 6:10:45 PM
On Fri, 26 Dec 2008 06:09:00 -0800, Mary <Mary[ at ]discussions.microsoft.com>
wrote:

[Quoted Text]
>I would like a sql statement or know how to create a query that will look at
>column Audit of query1 and pull that amount of records of table1. The result
>should be listed by the top Amt for the records based on query1.Audit.

AHA! Apologies for the prior responses, Mary, I'd missed that you want to
include the Audit value as the Top Values operand in the query.

Unfortunatly I don't think there's any way do do that without using VBA code
to construct the SQL string. What's the context? Are you running this query
from a form, or from the query window directly, or as the recordsource for a
Report?
--

John W. Vinson [MVP]
Re: query to pull records based of subquery column
Ken Sheridan <kenwsheridan[ at ]yahoo.co.uk> 12/28/2008 6:14:49 PM
On Dec 26, 2:09 pm, Mary <M...[ at ]discussions.microsoft.com> wrote:
[Quoted Text]
> Hello all..
> I am really really in need of a help.
>
> I have a table and a query, table1 and query1. Query1 has the following
> columns and rows:
> ID         Audit  
> 223      2
> 234      3
> 225     1
> 226     2
> The column ID is unique, have one record per row and data in column Audit
> are not unique.
>
> Here are the columns and rows for table 1. Records in column ID are unique
> but can have more than one record per rows. Amt Type is grouped by Trans
> type. Example, cash and visa are credit Trans type; where as, all MC and TC
> are paytogo.
>
> ID      Amt     Amt type        Trans Type
> 223     1.50    cash            credit
> 223     2.03    visa            credit
> 223     2.30    MC              paytogo
> 234     .50     TC              paytogo
> 234     1.75    cash            credit
> 234     .90     visa            credit
> 234     5.30    visa            credit
> 234     1.25    TC              paytogo
> 225     1.35    MC              paytogo
> 225     2.24    visa            credit
> 225     3.35    MC              paytogo
> 226     2.17    visa            credit
> 226     1.15    TC              paytogo
> 226     1.50    TC              paytogo
> 226     1.60    visa            credit
>
> I would like a sql statement or know how to create a query that will look at
> column Audit of query1 and pull that amount of records of table1.  The result
> should be listed by the top Amt for the records based on query1.Audit.
>
> The result for this query should be as shown below.  There are 3 records for
> ID 234, 1 record for ID 225, 2 records for ID 223 and 2 records for ID 226.
> ID         Amt     Amt type Trans Type
> 234     5.30    visa            credit
> 234     1.25    TC              paytogo
> 234     1.75    cash            credit
> 225     3.35    MC              paytogo
> 223     2.30    MC              paytogo
> 223     2.03    visa            credit
> 226     2.17    visa            credit
> 226     1.60    visa            credit
>
> Any help will be greatly appreciated as this has been holding be back from
> completing this project. I am opened to any direction. I think this is should
> query1 should be joined as a subquery of table1.
>
> Thanks a million in advance.

Try this:

SELECT T1.*
FROM Table1 As T1
INNER JOIN Query1
ON T1.ID = Query1.ID
WHERE T1.Amt >=
(SELECT MIN(Amt)
FROM Table1 As T2
WHERE T2.ID = T1.ID
AND
(SELECT COUNT(*)
FROM Table1 AS T3
WHERE T3.ID = T2.ID
AND T3.Amt >= T2.Amt) <= Query1.Audit);

Ken Sheridan
Stafford, England
Re: query to pull records based of subquery column
Mary 12/30/2008 10:13:23 PM

KEN!!!!!!!!!!!!!!!! YOU ARE THE BEST. It works on the sample tomorrow I will
apply it to the real tables. WWWWWWWWWWWWWOOOOOOOOOWWWWWWW.


And the query is fast in doing the calculations.


"Ken Sheridan" wrote:

[Quoted Text]
> On Dec 26, 2:09 pm, Mary <M...[ at ]discussions.microsoft.com> wrote:
> > Hello all..
> > I am really really in need of a help.
> >
> > I have a table and a query, table1 and query1. Query1 has the following
> > columns and rows:
> > ID Audit
> > 223 2
> > 234 3
> > 225 1
> > 226 2
> > The column ID is unique, have one record per row and data in column Audit
> > are not unique.
> >
> > Here are the columns and rows for table 1. Records in column ID are unique
> > but can have more than one record per rows. Amt Type is grouped by Trans
> > type. Example, cash and visa are credit Trans type; where as, all MC and TC
> > are paytogo.
> >
> > ID Amt Amt type Trans Type
> > 223 1.50 cash credit
> > 223 2.03 visa credit
> > 223 2.30 MC paytogo
> > 234 .50 TC paytogo
> > 234 1.75 cash credit
> > 234 .90 visa credit
> > 234 5.30 visa credit
> > 234 1.25 TC paytogo
> > 225 1.35 MC paytogo
> > 225 2.24 visa credit
> > 225 3.35 MC paytogo
> > 226 2.17 visa credit
> > 226 1.15 TC paytogo
> > 226 1.50 TC paytogo
> > 226 1.60 visa credit
> >
> > I would like a sql statement or know how to create a query that will look at
> > column Audit of query1 and pull that amount of records of table1. The result
> > should be listed by the top Amt for the records based on query1.Audit.
> >
> > The result for this query should be as shown below. There are 3 records for
> > ID 234, 1 record for ID 225, 2 records for ID 223 and 2 records for ID 226.
> > ID Amt Amt type Trans Type
> > 234 5.30 visa credit
> > 234 1.25 TC paytogo
> > 234 1.75 cash credit
> > 225 3.35 MC paytogo
> > 223 2.30 MC paytogo
> > 223 2.03 visa credit
> > 226 2.17 visa credit
> > 226 1.60 visa credit
> >
> > Any help will be greatly appreciated as this has been holding be back from
> > completing this project. I am opened to any direction. I think this is should
> > query1 should be joined as a subquery of table1.
> >
> > Thanks a million in advance.
>
> Try this:
>
> SELECT T1.*
> FROM Table1 As T1
> INNER JOIN Query1
> ON T1.ID = Query1.ID
> WHERE T1.Amt >=
> (SELECT MIN(Amt)
> FROM Table1 As T2
> WHERE T2.ID = T1.ID
> AND
> (SELECT COUNT(*)
> FROM Table1 AS T3
> WHERE T3.ID = T2.ID
> AND T3.Amt >= T2.Amt) <= Query1.Audit);
>
> Ken Sheridan
> Stafford, England
>
Re: query to pull records based of subquery column
Mary 12/31/2008 3:55:01 AM
KEN.

Update. This works great. But one strange thing is that I was testing the
same sample data. When I copy and paste new records into table2 and run the
query it does not reflect the total count in query1.audit. One record is
always missing. Now if I key a new record it correctly reflect the result
based of query1.audit.
I think this may have to do with access but I am not sure.

For example. Open table1 and copy and paste all 5 records for ID 234. This
should increase your total records on table1 for ID 234 to 10. Now go to
query1.audit and increase the audit for ID 234 to 4. Run the query. You will
see that the result change to from 3 to 2 instead of 4. But if you manual
increase by keying additional 5 records for 234. Then increase query1.audit
to 4. You will pull the correct amount of records (4 records).
This is not a major issue just want to know if this is a copy and paste
limitation with access.

Thanks a million for all of your help


"Mary" wrote:

[Quoted Text]
>
> KEN!!!!!!!!!!!!!!!! YOU ARE THE BEST. It works on the sample tomorrow I will
> apply it to the real tables. WWWWWWWWWWWWWOOOOOOOOOWWWWWWW.
>
>
> And the query is fast in doing the calculations.
>
>
> "Ken Sheridan" wrote:
>
> > On Dec 26, 2:09 pm, Mary <M...[ at ]discussions.microsoft.com> wrote:
> > > Hello all..
> > > I am really really in need of a help.
> > >
> > > I have a table and a query, table1 and query1. Query1 has the following
> > > columns and rows:
> > > ID Audit
> > > 223 2
> > > 234 3
> > > 225 1
> > > 226 2
> > > The column ID is unique, have one record per row and data in column Audit
> > > are not unique.
> > >
> > > Here are the columns and rows for table 1. Records in column ID are unique
> > > but can have more than one record per rows. Amt Type is grouped by Trans
> > > type. Example, cash and visa are credit Trans type; where as, all MC and TC
> > > are paytogo.
> > >
> > > ID Amt Amt type Trans Type
> > > 223 1.50 cash credit
> > > 223 2.03 visa credit
> > > 223 2.30 MC paytogo
> > > 234 .50 TC paytogo
> > > 234 1.75 cash credit
> > > 234 .90 visa credit
> > > 234 5.30 visa credit
> > > 234 1.25 TC paytogo
> > > 225 1.35 MC paytogo
> > > 225 2.24 visa credit
> > > 225 3.35 MC paytogo
> > > 226 2.17 visa credit
> > > 226 1.15 TC paytogo
> > > 226 1.50 TC paytogo
> > > 226 1.60 visa credit
> > >
> > > I would like a sql statement or know how to create a query that will look at
> > > column Audit of query1 and pull that amount of records of table1. The result
> > > should be listed by the top Amt for the records based on query1.Audit.
> > >
> > > The result for this query should be as shown below. There are 3 records for
> > > ID 234, 1 record for ID 225, 2 records for ID 223 and 2 records for ID 226.
> > > ID Amt Amt type Trans Type
> > > 234 5.30 visa credit
> > > 234 1.25 TC paytogo
> > > 234 1.75 cash credit
> > > 225 3.35 MC paytogo
> > > 223 2.30 MC paytogo
> > > 223 2.03 visa credit
> > > 226 2.17 visa credit
> > > 226 1.60 visa credit
> > >
> > > Any help will be greatly appreciated as this has been holding be back from
> > > completing this project. I am opened to any direction. I think this is should
> > > query1 should be joined as a subquery of table1.
> > >
> > > Thanks a million in advance.
> >
> > Try this:
> >
> > SELECT T1.*
> > FROM Table1 As T1
> > INNER JOIN Query1
> > ON T1.ID = Query1.ID
> > WHERE T1.Amt >=
> > (SELECT MIN(Amt)
> > FROM Table1 As T2
> > WHERE T2.ID = T1.ID
> > AND
> > (SELECT COUNT(*)
> > FROM Table1 AS T3
> > WHERE T3.ID = T2.ID
> > AND T3.Amt >= T2.Amt) <= Query1.Audit);
> >
> > Ken Sheridan
> > Stafford, England
> >

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net