1

我有一个名为的表news,并且使用这两个代码片段,我想创建一个扫描该keywords表的搜索引擎。一个表连接并运行得非常好,向查询中添加一个额外的表会更干净。

我的任务是创建一个从表中返回行的搜索引擎。搜索引擎基于关键字,非常适合特定术语,例如“纽约时报”,但如果我想输入新闻,那是所有新闻网站按 id 排序的地方。但有时,与 CNN 不同,由于 id 的原因,具有关键字“新闻”的完全不同的术语会在表格中弹出相当高的位置。使用新表,组织表会容易得多。这样,如果输入的术语是“新闻”,则站点将按 id 排序,即使它们在其他表上发生冲突,它们仍然按 id 排序。

虽然我的查询与传统查询有点不同,但我不知道如何

  1. 通过UNION或添加表格

  2. 带有某种LEFT JOIN标签。

我的查询如下,我希望有人解释:a)简单的问题b)告诉我或粘贴下面的代码

<?php
if( isset($_GET['k']) ){
    $k = $_GET['k'];
}else{
    $k = '';
}
$k = ( isset($_GET['k']) )? trim($_GET['k']) : '';
$terms = (strlen($k) > 0)? explode(' ', $k) : Array();


/* The code below is from a different part of the script */

$query = " SELECT * FROM scan WHERE "; 

$terms = array_map('mysql_real_escape_string', $terms);
$i = 0; 
foreach ($terms as $each) {
    if ($i++ !== 0){
        $query .= " AND ";
    }
    $query .= "keywords LIKE '%{$each}%'";
}
4

2 回答 2

2

我不确切知道您想做什么,但这可能会有所帮助:

$query = " SELECT * FROM scan, news WHERE scan.news_id = news.id AND ";

$terms = array_map('mysql_real_escape_string', $terms);

foreach ($terms as $each) {
  $query .= "AND scan.keywords LIKE '%{$each}%'";
}

通过在查询中添加条件并从两个表中进行选择,您可以在两个表之间建立联合。条件是保证两个表中的公共列相等。

于 2012-08-08T19:14:43.040 回答
0

对于左连接,请阅读此http://www.w3schools.com/sql/sql_join_left.asp

我真的不知道你在问什么。如果你能澄清你的问题,我会为你提供一个例子。谢谢。

于 2012-08-08T19:08:45.913 回答