SELECT pj.type AS type, count( pj.id ) AS project_count, count( evt.id ) AS alarm_count, ( SELECT count(id) from t_device where type=1) as camera_count, ( SELECT count(id) from t_device where type=2) as ai_box_count, ( SELECT count(id) from t_device where type=3) as radar_count, ( SELECT count(id) from t_device where type=4) as sensor_count, ( SELECT count(evt.id) FROM t_probably where project=pj.id AND status <> 1 and status is not null ORDER BY alarm_time DESC LIMIT 1 ) AS dissipate_event FROM t_project AS pj LEFT JOIN t_device AS dev ON pj.id = dev.project LEFT JOIN t_probably AS evt ON pj.id = evt.project LEFT JOIN t_organize AS org ON pj.organize = org.id ORDER BY pj.type DESC 在这段sql中,为什么project_count的数据比表里实际数据多几条
时间: 2023-06-13 15:07:59 浏览: 61
根据这段 SQL 语句,project_count 是通过对 t_project 表进行计数得出的,而 t_project 表可能存在重复的记录,因此 project_count 的数据可能比表里实际数据多几条。如果想要避免这种情况,可以在计数时使用 DISTINCT 关键字来排除重复的记录,例如:count( DISTINCT pj.id )。
相关问题
“self.m_button1.Bind(wx.EVT_BUTTON, MyDialog11(None).OnClick) self.m_button2.Bind(wx.EVT_BUTTON, MyDialog12(None).OnClick) self.m_button3.Bind(wx.EVT_BUTTON, MyDialog13(None).OnClick) self.m_button4.Bind(wx.EVT_BUTTON, MyDialog21(None).OnClick) self.m_button5.Bind(wx.EVT_BUTTON, MyDialog22(None).OnClick) self.m_button6.Bind(wx.EVT_BUTTON, MyDialog23(None).OnClick) self.m_button7.Bind(wx.EVT_BUTTON, MyDialog31(None).OnClick) self.m_button8.Bind(wx.EVT_BUTTON, MyDialog32(None).OnClick) self.m_button9.Bind(wx.EVT_BUTTON, MyDialog33(None).OnClick) self.m_button10.Bind(wx.EVT_BUTTON, MyDialog41(None).OnClick) self.m_button11.Bind(wx.EVT_BUTTON, MyDialog42(None).OnClick) self.m_button12.Bind(wx.EVT_BUTTON, MyDialog43(None).OnClick) self.m_button13.Bind(wx.EVT_BUTTON, MyDialog44(None).OnClick) self.m_button14.Bind(wx.EVT_BUTTON, MyDialog51(None).OnClick) self.m_button15.Bind(wx.EVT_BUTTON, MyDialog52(None).OnClick) self.m_button16.Bind(wx.EVT_BUTTON, MyDialog53(None).OnClick)”逐行解释代码
这段代码是一个Python程序中的一段语句,用于绑定多个按钮的事件处理函数。下面逐行解释代码:
1. self.m_button1.Bind(wx.EVT_BUTTON, MyDialog11(None).OnClick)
这行代码将m_button1按钮的wx.EVT_BUTTON事件与MyDialog11(None)对话框的OnClick事件绑定。
2. self.m_button2.Bind(wx.EVT_BUTTON, MyDialog12(None).OnClick)
这行代码将m_button2按钮的wx.EVT_BUTTON事件与MyDialog12(None)对话框的OnClick事件绑定。
3. self.m_button3.Bind(wx.EVT_BUTTON, MyDialog13(None).OnClick)
这行代码将m_button3按钮的wx.EVT_BUTTON事件与MyDialog13(None)对话框的OnClick事件绑定。
4. self.m_button4.Bind(wx.EVT_BUTTON, MyDialog21(None).OnClick)
这行代码将m_button4按钮的wx.EVT_BUTTON事件与MyDialog21(None)对话框的OnClick事件绑定。
5. self.m_button5.Bind(wx.EVT_BUTTON, MyDialog22(None).OnClick)
这行代码将m_button5按钮的wx.EVT_BUTTON事件与MyDialog22(None)对话框的OnClick事件绑定。
6. self.m_button6.Bind(wx.EVT_BUTTON, MyDialog23(None).OnClick)
这行代码将m_button6按钮的wx.EVT_BUTTON事件与MyDialog23(None)对话框的OnClick事件绑定。
7. self.m_button7.Bind(wx.EVT_BUTTON, MyDialog31(None).OnClick)
这行代码将m_button7按钮的wx.EVT_BUTTON事件与MyDialog31(None)对话框的OnClick事件绑定。
8. self.m_button8.Bind(wx.EVT_BUTTON, MyDialog32(None).OnClick)
这行代码将m_button8按钮的wx.EVT_BUTTON事件与MyDialog32(None)对话框的OnClick事件绑定。
9. self.m_button9.Bind(wx.EVT_BUTTON, MyDialog33(None).OnClick)
这行代码将m_button9按钮的wx.EVT_BUTTON事件与MyDialog33(None)对话框的OnClick事件绑定。
10. self.m_button10.Bind(wx.EVT_BUTTON, MyDialog41(None).OnClick)
这行代码将m_button10按钮的wx.EVT_BUTTON事件与MyDialog41(None)对话框的OnClick事件绑定。
11. self.m_button11.Bind(wx.EVT_BUTTON, MyDialog42(None).OnClick)
这行代码将m_button11按钮的wx.EVT_BUTTON事件与MyDialog42(None)对话框的OnClick事件绑定。
12. self.m_button12.Bind(wx.EVT_BUTTON, MyDialog43(None).OnClick)
这行代码将m_button12按钮的wx.EVT_BUTTON事件与MyDialog43(None)对话框的OnClick事件绑定。
13. self.m_button13.Bind(wx.EVT_BUTTON, MyDialog44(None).OnClick)
这行代码将m_button13按钮的wx.EVT_BUTTON事件与MyDialog44(None)对话框的OnClick事件绑定。
14. self.m_button14.Bind(wx.EVT_BUTTON, MyDialog51(None).OnClick)
这行代码将m_button14按钮的wx.EVT_BUTTON事件与MyDialog51(None)对话框的OnClick事件绑定。
15. self.m_button15.Bind(wx.EVT_BUTTON, MyDialog52(None).OnClick)
这行代码将m_button15按钮的wx.EVT_BUTTON事件与MyDialog52(None)对话框的OnClick事件绑定。
16. self.m_button16.Bind(wx.EVT_BUTTON, MyDialog53(None).OnClick)
这行代码将m_button16按钮的wx.EVT_BUTTON事件与MyDialog53(None)对话框的OnClick事件绑定。
这段代码的作用是为多个按钮分别绑定对应的事件处理函数,以实现不同的功能。
wx.EVT_LISTBOX
wx.EVT_LISTBOX是wxPython中的一个事件类型,用于处理列表框(ListBox)的事件。当用户在列表框中选择一个项时,就会触发该事件。
wx.EVT_LISTBOX事件可以用于执行与列表框相关的操作,例如根据用户选择的项更新其他控件的内容或执行特定的操作。
以下是wx.EVT_LISTBOX事件的一些常见用法:
1. 绑定事件处理函数:可以通过绑定wx.EVT_LISTBOX事件来指定当用户选择列表框中的项时要执行的函数。
2. 获取选择的项:可以使用列表框的GetSelection()方法获取用户当前选择的项的索引。
3. 更新其他控件:可以根据用户选择的项更新其他控件的内容,例如在选择不同的项时显示不同的文本或图片。
4. 执行特定操作:可以根据用户选择的项执行特定的操作,例如打开一个文件、发送网络请求等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)