I have the Table1 and the Table2 tables. Table1 has the B (Primary Key) and IC columns. Table2 has the CC, SC and IC columns:
Table Table1
| … | B | IC | … |
|---|---|---|---|
| … | B1 | IC1 | … |
Table Table2
| … | CC | SC | IC | … |
|---|---|---|---|---|
| … | CC1 | SC1 | IC1 | … |
| … | CC1 | SC2 | IC1 | … |
| … | CC2 | SC1 | IC1 | … |
| … | CC2 | SC2 | IC1 | … |
I want to query Table1, filtering its rows by a value of the B column. After finding the row (and I find only one since B is PK), I want to use the corresponding value of the IC column to query for the rows in Table2 that have the same IC value as the one of the IC column obtained from the first step. So, I want to filter these rows by specific CC and SC values.
The above representations explain the concept:
- I query
Table1for the rows whoseBvalue isB1. - I get that the corresponding
ICvalue isIC1. - I query
Table2for the rows whoseICvalue is identical to the previous one,IC1, and I want to filter the found rows by the specificCC2andSC1values. So, the desired result, in this case, is the third row ofTable2.
They tell me to use views when I can. I know that I can’t pass inputs to a view; moreover, I don’t want to use stored procedures. How can I create a view to get all the Table2 rows whose IC value is obtained from the Table1’s IC column, and filter these rows by specific CC and SC values? Maybe I need to use subqueries instead? Do I need to use joins? Thanks for your help.
Advertisement
Answer
If I understood your question correctly then you can try this
SELECT * FROM table2 WHERE IC = (SELECT IC FROM table1 WHERE B='B1')