Sqlite
使用 python 比較 Sqlite 3 中的多個表:
我對 SQLITE3 和 python 都很陌生。我正在做一個項目,我有一個數據庫,裡面有大約 20 個表。一個表用於使用者輸入,其他表預載入了值。我希望能夠將預載入表中的哪些值與使用者表進行比較和匹配。例如:這是範例表的連結
現在,我希望能夠將預載入表中的每一行與使用者表中的每一行進行比較。它們都有共同的 Barcode 列,以便能夠進行比較。因此,在查詢過程中,它應該檢查每一行: 1234 - milk - 1(那些列相等) 5678 - butter - 1(那些列相等) 9876 - sugar - 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()
我想到了。我能夠執行 FULL OUTER JOIN 來顯示一個表中缺少但包含在另一個表中的內容。
SELECT d.type, d.color, c.type, c.color FROM dogs d LEFT JOIN cats c USING(color) UNION ALL SELECT d.type, d.color, c.type, c.color FROM cats c LEFT JOIN dogs d USING(color) WHERE d.color IS NULL;