有没有办法我可以联接两个表并在另一个表中显示

时间:2019-08-24 07:48:36

标签: mysql sql

我正在设置有关包裹预订系统的应用程序,我需要选择一个特定包裹并将其标记为收藏夹,但希望该收藏夹保存选择该包裹的用户和该包裹所选择的包裹的数据。< / p>

我在数据库上用名称收藏夹创建了一个表,并给了3个字段名称fav_id(pk),package_id(package,pk)和user_id(user,pk),我想将两个表数据即user和用户选择的包,我知道加入将使它变得容易得多,但我有点困惑如何在“收藏夹”表中加入用户名和包名。

SELECT favorite_package.pid, favorite_package.user_id, 
users.user_id,users.username, package.pid,package.name FROM package JOIN 
package ON favorite_package.user_id= users.user_id;

进行会话并且用户单击某个软件包时登录该页面时,他们应该可以选择将该软件包标记为他的收藏夹,方法是将它们标记并发送到另一个将软件包标记为他的收藏夹的页面。

>

2 个答案:

答案 0 :(得分:1)

类似这样的事情...(没有提供完整的表结构,因此这是一种近似的解决方案)

    def _search(self):
    if self.inputBox.text() != '':
        srchRes = json.load(urllib.request.urlopen('http://www.omdbapi.com/?apikey=2ee068f3&s='+self.inputBox.text().replace(" ", "%20")))
        if srchRes['Response'] == 'True':
            self.info.hide()
            self.title1.show()
            self.title1.setText(srchRes['Search'][0]['Title'] + ' (' + srchRes['Search'][0]['Type'].capitalize() + ' ' + srchRes['Search'][0]['Year'] + ')')
            self.sel1.show()
            if int(srchRes['totalResults']) > 1:
                self.title2.show()
                self.title2.setText(srchRes['Search'][1]['Title'] + ' (' + srchRes['Search'][1]['Type'].capitalize() + ' ' + srchRes['Search'][1]['Year'] + ')')
                self.sel2.show()
            else:
                self.title2.hide()
                self.sel2.hide()
                self.title3.hide()
                self.sel3.hide()
                self.title4.hide()
                self.sel4.hide()
                self.title5.hide()
                self.sel5.hide()
                self.title6.hide()
                self.sel6.hide()
                self.title7.hide()
                self.sel7.hide()
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 50))
                Dialog.resize(600, 150)
                return
            if int(srchRes['totalResults']) > 2:
                self.title3.show()
                self.title3.setText(srchRes['Search'][2]['Title'] + ' (' + srchRes['Search'][2]['Type'].capitalize() + ' ' + srchRes['Search'][2]['Year'] + ')')
                self.sel3.show()
            else:
                self.title3.hide()
                self.sel3.hide()
                self.title4.hide()
                self.sel4.hide()
                self.title5.hide()
                self.sel5.hide()
                self.title6.hide()
                self.sel6.hide()
                self.title7.hide()
                self.sel7.hide()
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 100))
                Dialog.resize(600, 200)
                return
            if int(srchRes['totalResults']) > 3:
                self.title4.show()
                self.title4.setText(srchRes['Search'][3]['Title'] + ' (' + srchRes['Search'][3]['Type'].capitalize() + ' ' + srchRes['Search'][3]['Year'] + ')')
                self.sel4.show()
            else:
                self.title4.hide()
                self.sel4.hide()
                self.title5.hide()
                self.sel5.hide()
                self.title6.hide()
                self.sel6.hide()
                self.title7.hide()
                self.sel7.hide()
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 150))
                Dialog.resize(600, 250)
                return
            if int(srchRes['totalResults']) > 4:
                self.title5.show()
                self.title5.setText(srchRes['Search'][4]['Title'] + ' (' + srchRes['Search'][4]['Type'].capitalize() + ' ' + srchRes['Search'][4]['Year'] + ')')
                self.sel5.show()
            else:
                self.title5.hide()
                self.sel5.hide()
                self.title6.hide()
                self.sel6.hide()
                self.title7.hide()
                self.sel7.hide()
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 200))
                Dialog.resize(600, 300)
                return
            if int(srchRes['totalResults']) > 5:
                self.title6.show()
                self.title6.setText(srchRes['Search'][5]['Title'] + ' (' + srchRes['Search'][5]['Type'].capitalize() + ' ' + srchRes['Search'][5]['Year'] + ')')
                self.sel6.show()
            else:
                self.title6.hide()
                self.sel6.hide()
                self.title7.hide()
                self.sel7.hide()
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 250))
                Dialog.resize(600, 350)
                return
            if int(srchRes['totalResults']) > 6:
                self.title7.show()
                self.title7.setText(srchRes['Search'][6]['Title'] + ' (' + srchRes['Search'][6]['Type'].capitalize() + ' ' + srchRes['Search'][6]['Year'] + ')')
                self.sel7.show()
            else:
                self.title7.hide()
                self.sel7.hide()
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 300))
                Dialog.resize(600, 400)
                return
            if int(srchRes['totalResults']) > 7:
                self.title8.show()
                self.title8.setText(srchRes['Search'][7]['Title'] + ' (' + srchRes['Search'][7]['Type'].capitalize() + ' ' + srchRes['Search'][7]['Year'] + ')')
                self.sel8.show()
            else:
                self.title8.hide()
                self.sel8.hide()
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 350))
                Dialog.resize(600, 450)
                return
            if int(srchRes['totalResults']) > 8:
                self.title9.show()
                self.title9.setText(srchRes['Search'][8]['Title'] + ' (' + srchRes['Search'][8]['Type'].capitalize() + ' ' + srchRes['Search'][8]['Year'] + ')')
                self.sel9.show()
            else:
                self.title9.hide()
                self.sel9.hide()
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 400))
                Dialog.resize(600, 500)
                return
            if int(srchRes['totalResults']) > 9:
                self.title10.show()
                self.title10.setText(srchRes['Search'][9]['Title'] + ' (' + srchRes['Search'][9]['Type'].capitalize() + ' ' + srchRes['Search'][9]['Year'] + ')')
                self.sel10.show()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 500))
                Dialog.resize(600, 600)
            else:
                self.title10.hide()
                self.sel10.hide()
                self.gridLayout.setGeometry(QtCore.QRect(20, 80, 560, 450))
                Dialog.resize(600, 550)
                return
        else:
            self.title1.hide()
            self.sel1.hide()
            self.title2.hide()
            self.sel2.hide()
            self.title3.hide()
            self.sel3.hide()
            self.title4.hide()
            self.sel4.hide()
            self.title5.hide()
            self.sel5.hide()
            self.title6.hide()
            self.sel6.hide()
            self.title7.hide()
            self.sel7.hide()
            self.title8.hide()
            self.sel8.hide()
            self.title9.hide()
            self.sel9.hide()
            self.title10.hide()
            self.sel10.hide()
            Dialog.resize(600, 100)
    else:
            self.title1.hide()
            self.sel1.hide()
            self.title2.hide()
            self.sel2.hide()
            self.title3.hide()
            self.sel3.hide()
            self.title4.hide()
            self.sel4.hide()
            self.title5.hide()
            self.sel5.hide()
            self.title6.hide()
            self.sel6.hide()
            self.title7.hide()
            self.sel7.hide()
            self.title8.hide()
            self.sel8.hide()
            self.title9.hide()
            self.sel9.hide()
            self.title10.hide()
            self.sel10.hide()
            Dialog.resize(600, 100)

答案 1 :(得分:-1)

JOIN操作数的优先级高于逗号(操作数),因此联接被有效地视为

t1, t2, (t3, t4, t5 ON ... )

在t1,t2,t3前后加上括号。

SELECT * 
FROM  ( table1 AS t1, table2 AS t2, table3 AS t3 )
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4
WHERE ...

您还可以将查询写为:

SELECT * 
FROM  table1 AS t1
INNER JOIN table2 AS t2
INNER JOIN table3 AS t3
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4
WHERE ...

因为逗号等于没有连接条件的INNER JOIN。