2014-12-01 131 views
0

我有一个搜索关键字,我正在使用两个表搜索该关键字。用于搜索关键字的Mysql查询

搜索关键词的 '病人'

表 - default_pages

id  type_id  parent_id   status 
68  16   0     draft 
70  17   68    live 
227  17   44    live 
262  1   31    live 

表 - default_search

id  title     entry_id 
1  patient status  70 
2  patient check   227 
3  patient health  262 

我的查询是

"SELECT 
      s.title, p.id, p.type_id AS sqem 

      FROM default_search s LEFT JOIN default_pages p ON p.id=s.entry_id 

      WHERE s.title LIKE '%Patient%' 

      HAVING sqem IS NOT NULL" 

上述查询重写在默认页面的ID为70,227,262的情况下会变成3个结果,但是问题在于ID 70,它的父ID是68,ID 68的状态是草稿,所以我想从结果集中排除这一行,是我卡住的地方。

任何帮助,高度赞赏。提前致谢。

回答

0

default_pages表检查情况:

SELECT 
s.title, p.id, p.type_id AS sqem 
FROM default_search s LEFT JOIN default_pages p ON p.id=s.entry_id 
WHERE s.title LIKE '%Patient%' AND p.status='live' 
HAVING sqem IS NOT NULL 
+0

它返回相同的3行。但我不希望70被列入结果,因为它的父母已经获得'草稿'状态。 – Raj 2014-12-01 22:45:00

+0

我想你应该看看这个:http://stackoverflow.com/a/1446831/3067928并根据这个修改你的查询。你为什么不创建sqlfiddle。所以,其他人也可以尝试一下。 – 2014-12-01 22:49:27

0
SELECT 
    s.title, p.id, p.type_id AS sqem 
    FROM default_search s LEFT JOIN default_pages p ON p.id=s.entry_id 
    LEFT JOIN default_pages dp ON p.parent_id = dp.id 
    WHERE s.title LIKE '%Patient%' AND p.status='live' AND dp.status='live' 
    HAVING sqem IS NOT NULL 

另一个LEFT JOIN与default_pages “连接” ID为PARENT_ID?