Sounds to me like you'll need to join for that -- and list all the years you
are interested in in another table.  Try this?

SELECT y.Year, count(*) FROM Year as y LEFT JOIN projects ON
project.startyear<=y.Year AND project.endyear>=y.Year GROUP BY y.Year;

This will give you a count of 0 for any years without a project (Almost 100%
certain =] ).  But don't blame me if the query is grossly inefficient!

Nick Elliott

----- Original Message -----
From: "Steve Vernon" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, December 31, 2002 10:44 AM
Subject: Re: Year Lists


> Martin,
>     Thanks for the reply.
>
>     Good plan but at the moment my query is like (had to alter it slightly
> as it was in PHP and multiple lines, so dont take it as working).
>
> SELECT projects.name, project.endyear, project.startyear FROM projects
WHERE
> projects.startyear <= '(INPUT THE YEAR HERE)   && (projects.leaveyear >=
> '(YEAR HERE AS WELL)' || projects.leaveyear = '0000' ) LIMIT 5000
>
>     What you suggest basically will give a count on start year (or end
year
> if altered), which I have implemented and working for ended year. Say a
> project started in 1920 and another in 1921 and they both finish in 1925.
I
> would expect to get this:
>
>         1920    1 Project
>         1921    2 Projects
>         1922    2 Projects
>         1923    2 Projects
>         1924    2 Projects
>         1925    2 Projects
>         1926    0 Projects (or no line at all ideally).
> .... up to 2003
>
>
>
>     Ideally if a year does not have any projects it would not be listed.
>
>     Any more help would be great, or I could be wrong and you could have
the
> answer!
>
>     Steve
>
>
>
> > On Tue, 2002-12-31 at 14:53, Steve Vernon wrote:
> > > Hiya,
> > >     I have a database about projects in a company, they all have a
start
> > > year and end year. If the projects have not ended then they get a end
> year
> > > of 0000. I have made a SQL command, given a year, works out with
> projects
> > > are running in that year.
> > >
> > >     The company I am doing this for, wants basically a drop down box
> which
> > > says (1950- 8 Projects) and such like. Now with the current command I
> have
> > > it would mean 92or so SQL commands as the company has records back to
> 1910.
> > >
> > >     Is there a way to do this in one command? I have searched all the
> > > mannual and I can work out something similair to a for loop in SQL.
> Would
> > > variables help?
> > >
> >
> > Hi Steve,
> >
> > You want to use "select .... group by", something like:
> >
> > select start_year, count(*) from projects group by start_year;
> >
> >
> > ==
> > Martin
> >
> >
> > ---------------------------------------------------------------------
> > 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


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