如何对两个 MySQL 查询的结果进行排序

问题描述 投票:0回答:0

我尝试使用 order by union 对结果进行排序,但它与我在使用 order by 并集排序文档中阅读的以下代码的输出相同,但没有给出所需的结果。即在QTableWidget中显示排序后的结果 这是代码。

任何帮助将不胜感激。

   query = "SELECT company_name_e,direction_e,GROUP_CONCAT(phone_number),prod_description_e,address.branch_e,kifle_ketema_name_e,sefer_name_e,kebele,city_name_e,house_no FROM company INNER JOIN company_address ON company.company_id = company_address.company_id INNER JOIN address ON company_address.address_id = address.address_id LEFT JOIN addr_phone ON address.address_id = addr_phone.address_id LEFT JOIN phone ON addr_phone.phone_id = phone.phone_id  INNER JOIN add_keb ON company_address.address_id = add_keb.address_id INNER JOIN kebele ON add_keb.kebele_id = kebele.kebele_id INNER JOIN kifle_ketema ON kebele.kifle_ketema_id = kifle_ketema.kifle_ketema_id INNER JOIN add_sefer ON company_address.address_id = add_sefer.address_id INNER JOIN sefer ON add_sefer.sefer_id = sefer.sefer_id INNER JOIN city ON kifle_ketema.city_id = city.city_id where company_name_e LIKE %s group by company_name_e,direction_e,prod_description_e,address.branch_e,kifle_ketema_name_e,sefer_name_e,kebele,city_name_e,house_no order by (company_name_e LIKE %s) desc"
   cursor.execute(query,('%'+cname+'%',cname+'%'))
   records=cursor.fetchall()
  
  
   query1 = "SELECT   company_name_e,direction_e,GROUP_CONCAT(phone_number),prod_description_e,address.branch_e,kifle_ketema_name_e,sefer_name_e,kebele,city_name_e,house_no FROM company INNER JOIN flat ON company.company_id = flat.company_id INNER JOIN building ON flat.building_id = building.building_id INNER JOIN address ON building.address_id = address.address_id LEFT JOIN flat_phone ON flat.flat_id =flat_phone.flat_id LEFT JOIN phone ON flat_phone.phone_id = phone.phone_id INNER JOIN add_keb ON address.address_id = add_keb.address_id INNER JOIN kebele ON add_keb.kebele_id = kebele.kebele_id INNER JOIN kifle_ketema ON kebele.kifle_ketema_id = kifle_ketema.kifle_ketema_id INNER JOIN add_sefer ON address.address_id = add_sefer.address_id INNER JOIN sefer ON add_sefer.sefer_id = sefer.sefer_id INNER JOIN city ON kifle_ketema.city_id = city.city_id where company_name_e like %s group by company_name_e,direction_e,prod_description_e,address.branch_e,kifle_ketema_name_e,sefer_name_e,kebele,city_name_e,house_no order by (company_name_e LIKE %s) desc"
   cursor1.execute(query1,('%'+cname+'%',cname+'%'))
   records1=cursor1.fetchall()
  
   

   self.tableWidget.setColumnCount(1)
   self.tableWidget.setColumnWidth(0,1500)
   #self.tableWidget.setRowCount(10000)

   self.tableWidget.setRowCount(len(records)*10 + len(records1)*10)
   vhe=["Company Name","Direction","Phone Number","Description","Branches","SubCity","NeighbourHood","Kebele","City","House no"]

   self.tableWidget.horizontalHeader().setVisible(False)
   self.tableWidget.verticalHeader().setVisible(True)
   tableindex = 0

   for row in records:
         for i in range(10):
            item = QTableWidgetItem(vhe[i])  
            self.tableWidget.setVerticalHeaderItem(tableindex,item) 
            self.tableWidget.setItem(tableindex,0,QTableWidgetItem(row[i]))
            tableindex=tableindex+1
            
   for row1 in records1:
        for i in range(10):
           item1 = QTableWidgetItem(vhe[i])  
           self.tableWidget.setVerticalHeaderItem(tableindex,item1) 
           self.tableWidget.setItem(tableindex,0,QTableWidgetItem(row1[i]))
           tableindex=tableindex+1   

我尝试使用联合排序,但结果没有排序,它是随机的

python mysql pyqt5 sql-order-by
© www.soinside.com 2019 - 2024. All rights reserved.