Daniel,
>find the lab_number where ALL the tests have been performed and
>not the lab_numbers which have partial results.
SELECT t1.lab,t1.res,t1.dt
FROM tbl t1
WHERE NOT EXISTS(
SELECT lab FROM tbl t2 WHERE t1.lab=t2.lab AND t2.res IS NULL
);
The decorrelated version uses an exclusion join, runs faster but looks a
bit strange:
SELECT t1.lab_number,t1.result,t1.release_time
FROM tbl t1
LEFT JOIN tbl t2 ON t1.lab_number=t2.lab_number AND t2.result IS NULL
WHERE t2.lab_number IS NULL
There's a bit of discussion of this query pattern at
http://www.artfulsoftware.com/queries.php nder 'Joins', 'The [Not]
Exists Query Pattern'.
PB
-----
Daniel Smith wrote:
> I have a table with numerous columns but needing to perform a query
> based on three columns:
>
> Lab_number, result, release_time.
>
> What I want to do is search for lab_number where there is a result but
> not released. The problem that is making this difficult for me, is that
> there are multiple entries for the same lab_number, due to a lab_number
> having 1 or more tests being performed on it. The search I really want
> to do is find the lab_number where ALL the tests have been performed and
> not the lab_numbers which have partial results.
>
> *-------------------------------------------------------*
> |lab_number | result |release_time |
> | 1 | 10 |0000-00-00 00:00:00 |
> | 1 | 20 |0000-00-00 00:00:00 |
> | 2 | 5 |0000-00-00 00:00:00 |
> | 2 | |0000-00-00 00:00:00 |
> | 3 | |0000-00-00 00:00:00 |
> | 3 | |0000-00-00 00:00:00 |
> | 3 | |0000-00-00 00:00:00 |
> *-------------------------------------------------------*
>
> So the query I want will only return 1, as 2 is not yet complete. The
> attempts I have made so far will return 2 as well. The thing that is
> really annoying me is that I know I will kick myself when I see a
> solution!
>
> Thanks
>
> Danny
>
>
>
>
--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.410 / Virus Database: 268.16.13/632 - Release Date: 1/16/2007