搜索过滤器根据特定条件加入3个表

时间:2018-04-04 06:55:52

标签: php mysql codeigniter

我有3个表,即t1,t2,t3。

表:t1
说明:存储上传的文件

id | filename | display_filename | uploaded_path

表:t2
说明:存储已替换的文件 替换文件意味着我添加了替换上传文件的选项。因此t1中的文件将移至t2

id|fileid | filename | display_filename | uploaded_path

表:t3

描述:访问文件的日志详细信息

id|fileid|userid|action|access_time|ip_Address|is_backup(0 /1)

is_backup列用于了解所访问的文件是否较旧

我添加了一个用于列出日志详细信息的视图,其中包含display_file_name

过滤器

我的问题是

如果is_backup值为0,那么我想从 t1 获取display_filename,否则 t2

如何编写查询以检索过滤器数据?

SELECT t3.* FROM t3  
LEFT JOIN t1  
ON t1.id = t3.fileid 
LEFT JOIN t2 
ON  t2.fileid  = t3.fileid
WHERE t1.display_filename LIKE '%abc%';

以上查询仅会检查表 t1 我想根据is_backup

核对 t2

1 个答案:

答案 0 :(得分:2)

尝试以下代码,虽然我没有尝试过,但我认为它会起作用。

SELECT al.* FROM t3  
LEFT JOIN t1  
ON t1.id = t3.fileid 
LEFT JOIN t2 
ON  t2.fileid  = t3.fileid
WHERE IF(t3.is_backup = 0, t1.display_filename ,t2.display_filename ) LIKE '%abc%';

如果这对您有用,请告诉我.. !!!