dbTalk Databases Forums  

Help with an SQL Query

comp.databases.rdb comp.databases.rdb


Discuss Help with an SQL Query in the comp.databases.rdb forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Mike B
 
Posts: n/a

Default Help with an SQL Query - 04-28-2005 , 11:45 AM






I apologize if this is off-topic. If it is off-topic, please direct me to a
more appropriate group.

I am writing an SQL query for a project and am a little stuck. I need to
classify a list of employees into age brackets. (E.g.. 16-15, 25-35, etc.) I
am using the Micro Focus NetExpress SQL Wizard in DB2 compatibility mode.

I created a table AgeBrackets

Range | Lower | Upper
-----------------------
16-25| 16 |25
25-35|25 |35

Then I created a view:

CREATE VIEW vAgeRange (
Range,
Start,
Last)
As
SELECT A1.RangeDesc,
Start_Date = Today - A1.RangeLow years + 1 days,
End_Date = Today - A1.RangeHigh years
FROM ALAMEDA.ALAMEDA.AGERANGE A1

To put the age brackets in dates starting from today, so I get the earliest
and latest date someone can be born to be in an age bracket.

I am now trying to create a view where for each row in my EMPLOYEE table, I
want to compare the Employee_DateOfBirth to the Start_Date, end_Date and if
it is BETWEEN those dates, I want to insert the RangeDesc into the new view.

This is what I tried:

SELECT E1.EMPLOYEE, E1.DoB, V1.Range
FROM ALAMEDA.ALAMEDA.EMPLOYEE E1,
ALAMEDA.ALAMEDA.VAGERANGE V1
WHERE (E1.DOB BETWEEN V1.Start AND V1.Last)

But this returns an empty Query.

I'm a little stuck and any pointers will be really helpful.

thanks
Mike

--
Mike B



Reply With Quote
  #2  
Old   
Bob M. Lee
 
Posts: n/a

Default Re: Help with an SQL Query - 05-06-2005 , 11:39 PM






"Mike B" <mrcics2000-news-nomail (AT) nomail (DOT) yahoo.com> wrote

Quote:
I apologize if this is off-topic. If it is off-topic, please direct me to
a more appropriate group.

I am writing an SQL query for a project and am a little stuck. I need to
classify a list of employees into age brackets. (E.g.. 16-15, 25-35, etc.)
I am using the Micro Focus NetExpress SQL Wizard in DB2 compatibility
mode.

I created a table AgeBrackets

Range | Lower | Upper
-----------------------
16-25| 16 |25
25-35|25 |35

Then I created a view:

CREATE VIEW vAgeRange (
Range,
Start,
Last)
As
SELECT A1.RangeDesc,
Start_Date = Today - A1.RangeLow years + 1 days,
End_Date = Today - A1.RangeHigh years
FROM ALAMEDA.ALAMEDA.AGERANGE A1

To put the age brackets in dates starting from today, so I get the
earliest and latest date someone can be born to be in an age bracket.

I am now trying to create a view where for each row in my EMPLOYEE table,
I want to compare the Employee_DateOfBirth to the Start_Date, end_Date and
if it is BETWEEN those dates, I want to insert the RangeDesc into the new
view.

This is what I tried:

SELECT E1.EMPLOYEE, E1.DoB, V1.Range
FROM ALAMEDA.ALAMEDA.EMPLOYEE E1,
ALAMEDA.ALAMEDA.VAGERANGE V1
WHERE (E1.DOB BETWEEN V1.Start AND V1.Last)

But this returns an empty Query.

Sure. The inner product of two tables without a common set of column values
is an empty set.

What you need is a nested SELECT clause:

SELECT
E1.EMPLOYEE,
E1.DOB,
(SELECT V1.RANGE
FROM ALAMEDA.ALAMEDA.VAGERANGE V1
WHERE E1.DOB BETWEEN V1.START and V1.LAST
AND E1.DOB IS NOT NULL
AND E1.DOB <= TODAY
AND E1.DOB > (TODAY - 130 YEARS)
LIMIT TO 1 ROW)
FROM ALAMEDA.ALAMEDA.EMPLOYEE E1;

The nested SELECT clause locks the E1.DOB value for each row of EMPLOYEE -
and then
tests each E1.DOB value against each row of the view VAGERANGE to pull the
V1.RANGE value.




Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.