将来自不同表的2个查询与不同的字段名组合在一起

时间:2013-09-24 15:11:14

标签: php mysql sql

我想从两个单独的数据库表中选择并检索结果,然后在一个html表中循环它们。我可以做命令并单独命名,结合结果并循环遍历它们。有没有办法用一个查询来做到这一点?

以下示例不起作用,但这是我想要实现的逻辑。

$SQL = "SELECT * FROM table3 WHERE column5 = 'YES'";
$Data = mysql_query($SQL);

$SQL = "SELECT * FROM table1 WHERE column1 = 'YES'";
$Data = mysql_query($SQL);

// loops through records displaying in table format
for($Loop = 0; $Loop < mysql_num_rows($Data); $Loop++)
{
     $Row = mysql_fetch_assoc($Data);
     $Ref = $Row["Ref"];
     // rest of fields
}

注意:我知道mysql已被弃用。当我重建网站时,我将转移到pdo但是现在我需要使用mysql函数。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM table3 
JOIN table1 ON table3.column5=table1.column1 AND table3.column5='YES'

或者,将其更改为mysqli并使用http://docs.php.net/mysqli.multi-query

答案 1 :(得分:0)

如果两个表都具有相同的no,那么您可以在sql查询中使用 UNION 。属性 -

(SELECT * FROM table3 WHERE column5 = 'YES')
UNION
(SELECT * FROM table1 WHERE column1 = 'YES')

因此请使用以下代码段 -

$SQL = "(SELECT * FROM table3 WHERE column5 = 'YES') UNION (SELECT * FROM table1 WHERE column1 = 'YES')";
$Data = mysql_query($SQL);

// loops through records displaying in table format
for($Loop = 0; $Loop < mysql_num_rows($Data); $Loop++)
{
     $Row = mysql_fetch_assoc($Data);
     $Ref = $Row["Ref"];
     // rest of fields
}

在这种情况下,Ref查询中指定的第一个表格中应该有一个属性UNION,即table3