![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
#3
| |||
| |||
|
|
create table table1 (field1 varchar (8), field2 varchar (4)) field1 and field2 together is unique. Example data: Field1 Field2 1 A 1 B 1 C 2 A 2 C 3 A 3 B 3 D 4 A 4 B 1. The query one should find all the Field1 that has Field2 value of ONLY (A) and (B) Here the result will be Field1, 4 (only one result) 2. The query two should find all the Field1 that has Field2 value of (A)and (B) Here the result will be Field1,1,3 and 4 (three results) Right now, I am doing this way...Is there a more efficient way than this? -- Query one: SELECT <a.field1> from (SELECT <field1>, <field2> FROM table1 WHERE <field2> ='A' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='B' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='C') a WHERE <a.field1> not in (SELECT <field1 FROM table1 WHERE <field2> not in ('a', 'b', 'c')) GROUP by <a.field1 HAVING count(*) =3 order by <a.field1 --query 2 SELECT <a.field1> from (SELECT <field1>, <field2> FROM table1 WHERE <field2> ='a' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='b' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='c' )a GROUP by <a.field1 HAVING count(*) =3 order by <a.field1 Thank you so much !!! |
#4
| |||
| |||
|
|
--Query 1 SELECT field1 FROM Table1 GROUP BY field1 HAVING COUNT(distinct field2) = 2 AND COUNT(distinct CASE WHEN field2 IN ('a', 'b') THEN field2 END) = 2 --Query 2 SELECT field1 FROM Table1 WHERE field2 IN ('a', 'b') GROUP BY field1 HAVING COUNT(distinct field2) = 2 Roy Harvey Beacon Falls, CT On Mon, 23 Jul 2007 08:00:23 -0700, gelan... (AT) hotmail (DOT) com wrote: create table table1 (field1 varchar (8), field2 varchar (4)) field1 and field2 together is unique. Example data: Field1 Field2 1 A 1 B 1 C 2 A 2 C 3 A 3 B 3 D 4 A 4 B 1. The query one should find all the Field1 that has Field2 value of ONLY (A) and (B) Here the result will be Field1, 4 (only one result) 2. The query two should find all the Field1 that has Field2 value of (A)and (B) Here the result will be Field1,1,3 and 4 (three results) Right now, I am doing this way...Is there a more efficient way than this? -- Query one: SELECT <a.field1> from (SELECT <field1>, <field2> FROM table1 WHERE <field2> ='A' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='B' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='C') a WHERE <a.field1> not in (SELECT <field1 FROM table1 WHERE <field2> not in ('a', 'b', 'c')) GROUP by <a.field1 HAVING count(*) =3 order by <a.field1 --query 2 SELECT <a.field1> from (SELECT <field1>, <field2> FROM table1 WHERE <field2> ='a' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='b' UNION SELECT <field1>, <field2> FROM table1 WHERE <field2> ='c' )a GROUP by <a.field1 HAVING count(*) =3 order by <a.field1 Thank you so much !!!- Hide quoted text - - Show quoted text - |
![]() |
| Thread Tools | |
| Display Modes | |
| |