我必须合并像UNION这样的2个查询的结果。我的第一个查询根据一些用户选择的条件从视图中提取几行。然后我必须使用第一个查询选择的行从第二个表中获取记录。最后,我必须按特定顺序合并2个结果集。
我试图在这里显示表格布局和查询
First_Table
First_Table_ID (Primary key)
col1
col2
col3
...
Second_Table
Second_Table_ID (Primary Key)
First_Table_ID (Foreign key to corresponding record in First table, allowed to be NULL also)
col1
col2
Col3
...
我创建了一个视图如下
create view my_view (ID, item_typ, <oth_col_list>)
as
select First_Table_ID, item_typ, other_columns from First_Table
UNION ALL
select Second_Table_ID, item_typ, other_columns_compatible_with_above_table from Second_Table
where First_Table_ID is null;
首次查询
select * from my_view where <user_slected_criteria>
第二次查询 我正在使用上面结果集中的First_Table_ID运行我的PHP脚本,这会导致显着的转变时间。
foreach(result_row){
if(row belongs to First_Table) //decided based on item_typ which is different from both tables
select * from Second_Table where First_Table_ID = result_row.ID
此方案中的显示顺序非常重要,如下所示
my_view中的Item1
如果Second_Table中的任何相应项目显示全部
my_view中的Item2
如果Second_Table中的任何相应项目显示全部
...
我要提取的示例数据集如下
第一张表
<table><tbody><tr><th>First_Table_ID</th><th>Item_Typ</th><th>Date</th><th>Amt</th><th>Cust#</th></tr><tr><td>1</td><td>SVC</td><td>11/12/2015</td><td>10</td><td>1</td></tr><tr><td>2</td><td>SVC</td><td>11/20/2015</td><td>20</td><td>1</td></tr><tr><td>3</td><td>SVC</td><td>12/13/2015</td><td>40</td><td>1</td></tr><tr><td>4</td><td>SVC</td><td>4/1/2016</td><td>30</td><td>1</td></tr></tbody></table>
第二张表
<table><tbody><tr><th>Second_Table_ID</th><th>First_Table_ID</th><th>Item_Typ</th><th>Date</th><th>Amt</th><th>Cust#</th></tr><tr><td>1</td><td>1</td><td>PMT</td><td>11/15/2015</td><td>5</td><td>1</td></tr><tr><td>2</td><td>1</td><td>Discount</td><td>11/15/2015</td><td>5</td><td>1</td></tr><tr><td>3</td><td>2</td><td>PMT</td><td>11/25/2015</td><td>40</td><td>1</td></tr><tr><td>4</td><td>3</td><td>PMT</td><td>12/28/2015</td><td>35</td><td>1</td></tr><tr><td>5</td><td>2</td><td>Refund</td><td>12/30/2015</td><td>-15</td><td>1</td></tr><tr><td>7</td><td>NULL</td><td>PMT</td><td>1/1/2016</td><td>12</td><td>2</td></tr><tr><td>8</td><td>NULL</td><td>PMT</td><td>3/1/2016</td><td>35</td><td>3</td></tr></tbody></table>
查看输出
<table><tbody><tr><th>ID</th><th>Item_Typ</th><th>Date</th><th>Amt</th><th>Cust#</th></tr><tr><td>1</td><td>SVC</td><td>11/12/2015</td><td>10</td><td>1</td></tr><tr><td>2</td><td>SVC</td><td>11/20/2015</td><td>20</td><td>1</td></tr><tr><td>3</td><td>SVC</td><td>12/13/2015</td><td>40</td><td>1</td></tr><tr><td>4</td><td>SVC</td><td>4/1/2016</td><td>30</td><td>1</td></tr><tr><td>7</td><td>PMT</td><td>1/1/2016</td><td>12</td><td>2</td></tr><tr><td>8</td><td>PMT</td><td>3/1/2016</td><td>35</td><td>3</td></tr></tbody></table>
从第二个Table All Second table
获取Item_Typ SVC的第二个表记录之后的最终输出
<table><tbody><tr><th>Item_Typ</th><th>Date</th><th>Amt</th><th>Cust#</th><th>Balance</th></tr><tr><td>SVC</td><td>11/12/2015</td><td>10</td><td>1</td><td>0</td></tr><tr><td>PMT</td><td>11/15/2015</td><td>5</td><td>1</td><td> </td></tr><tr><td>Discount</td><td>11/15/2015</td><td>5</td><td>1</td><td> </td></tr><tr><td>SVC</td><td>11/20/2015</td><td>20</td><td>1</td><td>-5</td></tr><tr><td>PMT</td><td>11/25/2015</td><td>40</td><td>1</td><td> </td></tr><tr><td>Refund</td><td>12/30/2015</td><td>-15</td><td>1</td><td> </td></tr><tr><td>SVC</td><td>12/13/2015</td><td>40</td><td>1</td><td>5</td></tr><tr><td>PMT</td><td>12/28/2015</td><td>35</td><td>1</td><td> </td></tr><tr><td>SVC</td><td>4/1/2016</td><td>30</td><td>1</td><td>30</td></tr><tr><td>PMT</td><td>1/1/2016</td><td>12</td><td>2</td><td> </td></tr><tr><td>PMT</td><td>3/1/2016</td><td>35</td><td>3</td><td> </td></tr></tbody></table>