2014-03-13 301 views
1

我创建一个搜索使用PHP,我需要搜索公司公司名称公司类别加入两个mysql查询?

* company_content TB *

标题 类别_id

* company_category TB *

标题(类别名称) ID PARENT_ID(内容表类别ID上)

这里的我的查询

$query=mysql_query("SELECT b.title FROM sltdb_cddir_content a, sltdb_cddir_categories b 
WHERE b.title like '%".$searchg."%' AND b.parent_id=81 UNION 
SELECT a.title FROM sltdb_cddir_content a, sltdb_cddir_categories b 
WHERE a.categories_id=b.id AND a.title like '%".$searchg."%' AND b.parent_id=81"); 

这种类型的联合有效吗?请指教

UPDATE 01

$query=mysql_query("SELECT b.title 
FROM sltdb_cddir_categories b 
WHERE b.title like '%".$searchg."%' AND b.parent_id = 81 
UNION 
SELECT a.title 
FROM sltdb_cddir_content a join 
     sltdb_cddir_categories b 
     on a.categories_id = b.id 
WHERE a.title like '%".$searchg."%' AND b.parent_id = 81"); 
$json=array(); 
while($display=mysql_fetch_array($query)){ 
    $json[]=array(
     'value'=> $display["title"], 
     'label'=>$display["title"] 
    ); 
} 




echo json_encode($json); 
+2

备注:mysql_ *函数已弃用。您应该查看[mysqli](http://us1.php.net/mysqli)或[PDO](http://us1.php.net/pdo)并准备好语句。另外,请留意[Bobby Tables](http://bobby-tables.com/)。 –

+0

@Matthew约翰逊:你可以给我建议这个.http://stackoverflow.com/questions/22440392/ajax-search-when-click-on-category-name-show-the-items-under-that-c​​ategory- as-re – user3406921

回答

0

这是您的查询:

SELECT b.title 
FROM sltdb_cddir_content a, sltdb_cddir_categories b 
WHERE b.title like '%".$searchg."%' AND b.parent_id=81 
UNION 
SELECT a.title 
FROM sltdb_cddir_content a, sltdb_cddir_categories b 
WHERE a.categories_id=b.id AND a.title like '%".$searchg."%' AND b.parent_id=81; 

在第一个子查询中,加入到a是不重要的。这些值从不使用。这似乎是一个等效查询:

SELECT b.title 
FROM sltdb_cddir_categories b 
WHERE b.title like '%".$searchg."%' AND b.parent_id = 81 
UNION 
SELECT a.title 
FROM sltdb_cddir_content a join 
     sltdb_cddir_categories b 
     on a.categories_id = b.id 
WHERE a.title like '%".$searchg."%' AND b.parent_id = 81; 

如果目的是从两个表,其中相应的parent_id获得所有冠军是81和标题的模式,那么这个查询看起来合理匹配。

+0

:在我的情况b.title是类别标题,我想要显示与该特定类别相关的内容,并且 a.title是内容标题(该类别下的内容) 当前单个内容搜索是工作的地方,就好像我试图从类别名称搜索类别名称 autofiltering,但reuslts搜索按钮单击时不显示。请咨询 – user3406921

+0

请检查这个http://stackoverflow.com/questions/22440392/ajax-search-when-click-on-category-name-show-the-items-under-that-c​​ategory-as-re – user3406921

0

我会去一个LEFT JOIN查询

SELECT a.title, b.title 
FROM sltdb_cddir_content a 
LEFT JOIN sltdb_cddir_categories b 
ON a.categories_id=b.id 
WHERE (b.title like '%".$searchg."%' OR a.title like '%".$searchg."%') 
AND b.parent_id = 81 
+0

:在我的情况下,b.title是类别标题,其中我想要显示与该特定类别相关的内容,而a.title是内容标题(目录下的内容)当前单个内容搜索是工作的,我尝试从类别名称只搜索类别名称autofiltering,但reuslts搜索按钮单击时不显示。请指教。我有更新我的问题请参阅更新o1 – user3406921

+0

请点击此处http://stackoverflow.com/questions/22440392/ajax-search-when-click-on-category-name-show-the-items-under-that-c​​ategory -as-re – user3406921