import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
# Create two tables
cur.execute('CREATE TABLE A (id INTEGER, name TEXT)')
cur.execute('CREATE TABLE B (id INTEGER, color TEXT)')
# Insert data
cur.execute("INSERT INTO A VALUES (1, 'Alice')")
cur.execute("INSERT INTO A VALUES (2, 'Bob')")
cur.execute("INSERT INTO B VALUES (1, 'Red')")
cur.execute("INSERT INTO B VALUES (2, 'Blue')")
cur.execute("INSERT INTO B VALUES (3, 'Green')")
# Cartesian product
cur.execute('SELECT A.name, B.color FROM A, B')
cartesian = cur.fetchall()
# Inner join
cur.execute('SELECT A.name, B.color FROM A INNER JOIN B ON A.id = B.id')
inner_join = cur.fetchall()
# Left join
cur.execute('SELECT A.name, B.color FROM A LEFT JOIN B ON A.id = B.id')
left_join = cur.fetchall()
print('Cartesian Product:', cartesian)
print('Inner Join:', inner_join)
print('Left Join:', left_join)