2012-02-15 80 views
1

好吧,这有点复杂,因为我的表没有被引用或组合或相互匹配,所以我不能使用JOIN的。我正在构建一个搜索表单,它可以简单地在多个表中匹配搜索关键字。如何检查行是否存在,以检查Mysql联盟?

我遇到的问题是,我不得不生成新闻项链接取决于哪个表结果来了,但我无法找到一个钩子。 MySql联合工作完美,除非我不能检查数据是来自表a还是表b。

here is short version 
SELECT i.title,i.category FROM table_a WHERE REGEXP 'news' 
UNION 
SELECT i.title,i.category FROM table_b WHERE REGEXP 'news' 

现在,我的表A中有36个行和表B中有34个,还有一个区别是,表A有行名称extra_field这是我想检查和基于该切换我的链接。查询后

PHP开关就应该像这样

foreach($rows as $row) : 
if($row->extra_field): 
$link = 'index.php?".$row->category.$row->title".html' 
else: 
$link = 'index.php?".$row->title".html' 
endif; 
endforeach; 

那么,有没有办法在我的SQL UNION,以检查是否该行存在?我知道如何检查行是否存在,但如何在UNION中做到这一点?

请帮助。谢谢!

回答

1

使用你的短版为例,您可以添加一个额外的列查询:

SELECT i.title,i.category,'a' as source FROM table_a WHERE REGEXP 'news' 
UNION 
SELECT i.title,i.category, 'b' as source FROM table_b WHERE REGEXP 'news' 

然后在你的代码,你可以检查“源”列中。