2013-01-15 57 views
1

我想从两个彼此相邻的不同表中拉列。提取不同表格中的列并彼此相邻显示

我有如下PHP代码:

<table> 
<tr> 
<th>Date</th> 
<th>Performance A </th> 
<th>Performance B </th> 
</tr> 
$sql = "select date, Aperformance from table1 group by date"; 
$sql1 = "select date, Bperformance from table2 group by date"; 
$result = mssql_query($sql); 
while ($column = mssql_fetch_array($result)) 

{ 
echo "<tr><td>".$column[0]."</td>"; 
echo "<td>".$column[1]."</td></tr>"; 
} 

这如下产生输出:

Date  | Performance A | Performance B 
01/05/12 | 40%   | 
02/05/12 | 30%   | 
03/05/12 | 25%   | 

现在我要填写从查询$ SQL1第三列。我不希望$ sql1的日期列,第二列Bperformance需要放在这里。我该怎么做?

+0

FYI:如果查询不指定' ORDER BY'子句,则不能保证返回的行的顺序。并排放置两个查询的结果并希望它们有一个共同的列可能会导致惊愕。使用'JOIN'将确保数据相关,但仍然必须指定顺序。 – HABO

回答

0

假设两个查询返回相同的行数,你可以简单地做:

$result1 = mssql_query($sql); 
$result2 = mssql_query($sql2); 
while($column1 = mssql_fetch_array($result1)) { 
    $column2 = mssql_fetch_array($result2); 
    echo "<tr><td>$column1[0]</td><td>$column2[0]</td></tr>"; 
} 

如果查询返回不同大小的结果集,那么你就必须做一些额外的工作。

+0

感谢它为我工作... – user1449596

1

你可以简单地使用连接,使用全外连接,您可以检索行如果在表中没有一个匹配日期

SELECT A.Date , A.APerformance AS [Performance A] , B.BPerformance AS [Performance B] 
FROM (
    SELECT Date 
     ,APerformance 
    FROM Table1 
    GROUP BY Date 
    ) A 
FULL OUTER JOIN (
    SELECT Date 
     ,BPerformance 
    FROM Table2 
    GROUP BY Date 
    ) B ON A.Date= B.Date 
+0

@thomas ....感谢这也工作... – user1449596

+0

@ user1449596由于前面的查询的限制(如marc指出),使用这个更安全。国际海事组织最好在一次查询呼叫中运行整个事件而不是两次呼叫 – jazzytomato