Mohan
Mohan

Reputation: 3903

How to change my below Pgsql Query

I would like to execute the below query by passing some values from applet side tables.

My table is

style_no       | version_no | style_id
---------------------+------------+----
 Menshirt      |     1      |      861
 Menshirt      |     2      |      870
 Tops          |     1      |      893
 Childwear     |     1      |      856
 Childwear     |     2      |      978

If user select MenShirt with version 1,Tops with version 1,ChildWear with version 2 details, so my StylenoStr arguments = (MenShirt, Tops, Childwear) and VernoStr argument = (1, 1, 2). My problem is the below query retrieves the data with MenShirt details for Version 2 which is no needed here. How do I write a query to get results for only selected data? I am using Pgsql.

Actual query:

select style_id, style_no, version_no 
from style 
where style_no in (" + StylenoStr + ") 
  and version_no in (" + VernoStr + ")

Executed query:

select style_id, style_no, version_no 
from style 
where style_no in ('Menshirt', 'Tops', 'Childwear') 
  and version_no in ('1', '1', '2');

Result I am getting:

style_id | style_no        | version_no
---------+-----------------+------------
     861 | Menshirt        |     1
     870 | Menshirt        |     2
     893 | Tops            |     1
     978 | Childwear       |     2

Result I need is:

 style_id | style_no       | version_no
----------+----------------+------------
      861 | Menshirt       |     1
      893 | Tops           |     1
      978 | Childwear      |     2

Thanks a lot.

Upvotes: 0

Views: 102

Answers (1)

Peter Eisentraut
Peter Eisentraut

Reputation: 36729

select style_id, style_no, version_no
from style
where (style_no, version_no) in (('Menshirt', '1'),
                                 ('Tops', '1'),
                                 ('Childwear', '2'));

Upvotes: 2

Related Questions