Php 当可以在两个表中进行搜索时,从相关的MySQL表中检索相关信息的有效查询是什么

Php 当可以在两个表中进行搜索时,从相关的MySQL表中检索相关信息的有效查询是什么,php,mysql,Php,Mysql,我有两个MySQL表,如下所示,我使用php运行我的查询 表a +--------+--------+--------+--------+ | taf1 | taf2 | taf3 | taf4 | +========+========+========+========+ | dataa1 | dataa2 | dataa3 | dataa4 | +--------+--------+--------+--------+ | datab1 | datab2 | datab3 |

我有两个MySQL表,如下所示,我使用php运行我的查询

表a

+--------+--------+--------+--------+
| taf1   | taf2   | taf3   | taf4   |
+========+========+========+========+
| dataa1 | dataa2 | dataa3 | dataa4 |
+--------+--------+--------+--------+
| datab1 | datab2 | datab3 | datab4 |
+--------+--------+--------+--------+
| datac1 | datac2 | datac3 | datac4 |
+--------+--------+--------+--------+
| datad1 | datad2 | datad3 | datad4 |
+--------+--------+--------+--------+
表b

+--------+--------+--------+--------+
| tbf1   | tbf2   | tbf3   | tbf4   |
+========+========+========+========+
| dataa5 | dataa6 | dataa7 | dataa4 |
+--------+--------+--------+--------+
| datab5 | datab6 | datab7 | datab4 |
+--------+--------+--------+--------+
| datac5 | datac6 | datac7 | datac4 |
+--------+--------+--------+--------+
| datad5 | datad6 | datad7 | datad4 |
+--------+--------+--------+--------+
taf1
taf2
taf3
taf4
是第一个表的字段,
tbf1
tbf2
tbf3
tbf4
是第二个表的字段
taf4
tbf4
具有相同的条目,用于链接两个表。在结果页面中,我显示
taf1
taf2
taf3
tbf1
字段。此外,可以在这4个字段中进行搜索(提供了一个下拉列表,以便用户可以选择搜索字段)。我该怎么做

目前,我使用以下代码

$key = "keyword";
$field = "fieldname";

if($field == "tbf1"){
  $engine = "table_b";
  //search in table_b. code incomplete.
}else{

  $query = "SELECT * FROM table_a WHERE $field LIKE '%$key%'";
  $result = mysql_query($query);
  while($row = mysql_fetch_array($result)){
    $link = $row['taf4'];
    $query2 = "SELECT NUMBER FROM table_b WHERE tbf4 = '$link'";
    $result2 = mysql_query($query2);
    $row2 = mysql_fetch_array($result2);
    echo $row['taf1']." - ".$row['taf2']." - ".$row['taf3']." - ".$row2['tbf1']."<br />";
  }

}
$key=“关键字”;
$field=“fieldname”;
如果($field==“tbf1”){
$engine=“表b”;
//在表中搜索。代码不完整。
}否则{
$query=“从表a中选择*,其中的$字段类似“%$key%””;
$result=mysql\u query($query);
while($row=mysql\u fetch\u数组($result)){
$link=$row['taf4'];
$query2=“从表b中选择编号,其中tbf4='$link';
$result2=mysql\u查询($query2);
$row2=mysql\u fetch\u数组($result2);
echo$row['taf1']。“-”$row['taf2']。“-”$row['taf3']。“-”$row2['tbf1']。“
”; } }

有什么简单有效的方法可以做到这一点吗?

@MarkBaker你能发布代码吗..这是你真正需要学习的东西-@MarkBaker好的:)我同意我确实需要学习它。但是你能发布一个代码来解决我当前的问题吗?什么是
taf
tbf
?@blasteralfredψ这是一个表别名,表的另一个名称。
taf
tab
表a
表b
的别名。。。在使用联接时,我总是倾向于使用别名,因为有时需要多次对同一个表进行联接,而别名是唯一标识符
SELECT taf.*,
       tbf.*
  FROM table_a taf
 INNER JOIN table_b tbf
         ON tbf.tbf4 = taf.taf4
 WHERE taf......