Suggestions intermixed with your questions below. However, because you only described your table and neglected to post the actual CREATE TABLE statement, I will need to make a few assumptions (the actual name of your table and the fact that missing data is stored as nulls are two I can think of right away).
"N. Kavithashree" <[EMAIL PROTECTED]> wrote on 12/02/2004 01:33:01 AM: > > hello, > > Example : i hv a table containg date, flower, perfume,codeno,regno etc > > There are some row which have only flower entries for a day. there are > some rows which have only perfume entries for a day. > some rows have both florwer and perfume entries for a day..ie same day > contains both entries. > > same flower names may repeat but on diff dates or on diff regno. > similarly for perfume. > > but table has no duplicate entries. > > Query : what i want is > > 1) To retrieve those records for which there is both entries for flower > and perfume on same date This is a simple WHERE condition check SELECT * FROM flowerdata WHERE flower is not null and perfume is not null > > 2) To retriev records for perfume entries which have flower entries for > the same date , same regno and same codeno. You can accomplish this with a "self-join" SELECT p.* FROM flowerdata p INNER JOIN flowerdata f ON f.flower is not null AND f.regno = p.regno AND f.date = p.date AND f.codeno = p.codeno WHERE p.perfume IS NOT null > > 3) To retrieve records which doesnt hv a flower entry for the same date as > that of perfume This is also a self-join but this time we use a LEFT JOIN and not an INNER JOIN SELECT p.* FROM flowerdata p LEFT JOIN flowerdata f ON f.flower is not null AND f.date = p.date WHERE p.perfume IS NOT null AND f.date IS null AND p.flower IS null The reason this query works is that we first try to match records that meet your test condition (same date with flower entry) then look for the exceptions (the non-matching records) from the table on the LEFT side of the join. The ON clause handles the test condition while the WHERE clause identifies only those that don't match your test (the first WHERE condition makes sure that these are perfume records while the first AND-ed condition in the WHERE clause will eliminate any matches). Since you can have both flower and perfume data on the same date in some records I also had to also exclude those dual-status records from this result (the last AND-ed condition in the WHERE clause) as they would have violated your query requirements. > > ==================================================== > N. Kavithashree > =================================================== > > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] > Shawn Green Database Administrator Unimin Corporation - Spruce Pine