如何将表1中的一列与表2中的另一列进行比较?

时间:2019-03-18 23:51:11

标签: python sqlite

我对SQLITE3和python还是很陌生。我是SQLite的完整入门者。我不太了解。我现在正在为我的项目学习。我正在一个项目中,我有一个数据库,其中包含大约20个表。一个表供用户输入,其他表已预加载值。如何将预加载表中的哪些值与用户表进行比较和匹配?例如:

Users Table: 
Barcode:      Item: 
1234          milk
4321          cheese
5678          butter
8765          water
9876          sugar

Pre-Loaded Table: 
Barcode:       Availability:
1234               1
5678               1
9876               1
1111               1

现在,我希望能够将“预加载表”中的每一行与“用户表”中的每一行进行比较。他们都有共同的“条形码”列,可以进行比较。结果,在查询过程中,它应检查每一行: 1234-牛奶-1(这些列相等) 5678-黄油-1(这些列相等) 9876-糖-1(这些列相等) 1100--1(“用户表”中不存在此条形码)

因此,如果在用户表中不存在条形码(在这种情况下为1100),则应打印代码:您没有预加载表的所有项目。我如何获得此代码?

到目前为止,我有这个:这段代码确实可以工作。

import sqlite3 as sq



connect = sq.connect('Food_Data.db')
con = connect.cursor()

sql = ("SELECT Users_Food.Barcode, Users_Food.Item, Recipe1.Ham_Swiss_Omelet FROM Users_Food INNER JOIN Recipe1 ON Users_Food.Barcode = Recipe1.Barcode WHERE Recipe1.Ham_Swiss_Omelet = '1'")
con.execute(sql)
data = con.fetchall()
print("You can make: Ham Swiss Omelet")
formatted_row = '{:<10} {:<9} {:>9} '
print(formatted_row.format("Barcode", "Ingredients", "Availability"))
for row in data:
    print(formatted_row.format(*row))
    #print (row[:])
    #connect.commit()

它打印:

You can make: Ham Swiss Omelet
Barcode    Ingredients Availability 
9130849874 butter            1 
2870896881 eggs              1 
5501066727 water             1 
1765023029 salt              1 
9118188735 pepper            1 
4087256674 ham               1 
3009527296 cheese            1 

SQLite代码:

sql = ("SELECT Users_Food.Barcode, Users_Food.Item, Recipe1.Ham_Swiss_Omelet FROM Users_Food INNER JOIN Recipe1 ON Users_Food.Barcode = Recipe1.Barcode WHERE Recipe1.Ham_Swiss_Omelet = '1'")

它将两个表与共同的条形码以及相应的食品名称和可用性结合在一起。但是,如果在预加载表中没有条形码值之一,那么当我比较时如何编码以了解它不存在,同时仍显示这两个表之间的共同点?就像检查表是否相同。

0 个答案:

没有答案