在一个查询中获取5个表数据...没有连接...没有关系

时间:2017-07-20 06:24:56

标签: php mysql codeigniter

我有5个或更多表用于日志。

  
      
  1. tbl_product_log
  2.   
  3. tbl_user_log
  4.   
  5. tbl_customer_log
  6.   
  7. tbl_vendor_log
  8.   
  9. tbl_quotations_logs
  10.   

他们彼此没有关系。但是它们具有相同的列层次结构。

  
      
  1. LOGID
  2.   
  3. logdetails
  4.   
  5. logdatetime
  6.   

每当这些表格中发生了某些事情(例如“插入”,“删除”,更新)时,会在日志的相对表格中插入一条记录。

现在我想在一个页面中显示所有日志。其中有6个标签。

  
      
  1. 所有日志
  2.   
  3. 产品日志
  4.   
  5. 用户登录
  6.   
  7. 客户登录
  8.   
  9. 供应商日志
  10.   
  11. 报价日志
  12.   

喜欢这个

enter image description here

在每个标签中,例如(products logs, user logs, customer logs ....)我成功地获得了所有日志数据。

enter image description here

enter image description here

现在,我想在All标签中显示所有日志数据,就像在其他标签中一样。

我尝试了自己的查询,但它分别向我展示了所有内容。

这是我的查询

SELECT * FROM tbl_product_log, tbl_user_log, tbl_customer_log, tbl_vendor_log, tbl_quotations_logs Limit 20

这是结果

enter image description here

所以请告诉我如何实现这一点,所有日志数据只显示在All tab中,只有三列,其他标签显示结果只有一个查询。

跳过你理解我的问题。

3 个答案:

答案 0 :(得分:2)

使用union连接所有表

(Select * From tbl_product_log LIMIT 5)

union

(Select * From tbl_user_log LIMIT 5)

union

(Select * From tbl_customer_log LIMIT 5)

union

(Select * From tbl_vendor_log LIMIT 5)

union

(Select * From tbl_quotation_log LIMIT 5);

注意:此查询将产生总共25条记录

答案 1 :(得分:1)

试试这个

private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
    WebBrowser.Dispose();
}

答案 2 :(得分:0)

尝试使用UNION

SELECT * FROM
(SELECT logid, logdetails,logdatetime, '1' as identifier FROM tbl_product_log) as a
UNION ALL
(SELECT logid, logdetails,logdatetime, '2' as identifier FROM tbl_user_log) as b
UNION ALL
(SELECT logid, logdetails,logdatetime, '3' as identifier FROM tbl_customer_log) as c
UNION ALL
(SELECT logid, logdetails,logdatetime, '4' as identifier FROM tbl_vendor_log) as d
UNION ALL
(SELECT logid, logdetails,logdatetime, '5' as identifier FROM tbl_quotations_logs) as e
-- WHERE indentifier = '' //in here you can put here to filter what report you wanted to appear
ORDER BY logid // Order it by Logid
LIMIT 20 //change the limit

在与其他表结合的每个表上放置一个标识符,这样您仍然可以控制数据的来源。