SQL, вставка внешних ключей в таблицу

В поля order_id и quatity нужно тоже вставить значения. В order_id вставить SELECT id FROM orders WHERE customer_id = 3 В quatity какое-нибудь число. Как вставить?

INSERT INTO sales (product_id, order_id,quatity) SELECT product_id FROM products  
    WHERE name = 'Масло крестьянское'   
    -- а дальше как?

Всё целиком

import sqlite3 as sq  
  
products_ = [('Хлеб бородинский', 60),  
             ('Молоко лианозовское', 70),  
             ('Масло крестьянское', 120),  
             ('Майонез Слобода', 250),  
             ('Чай индийский', 650)]  
  
customers_ = [('Иван', 'Селедкин'),  
              ('Ефим', 'Колокольчиков'),  
              ('Алексей', 'Пивоваров'),  
              ('Николай', 'Ольховский'),  
              ('Петр', 'Макаренко')]  
  
with sq.connect("shop.db") as con:  
    cur = con.cursor()  
  
    cur.execute("DROP TABLE IF EXISTS customers")  
    cur.execute("DROP TABLE IF EXISTS orders")  
    cur.execute("DROP TABLE IF EXISTS sales")  
    cur.execute("DROP TABLE IF EXISTS products")  
  
    cur.execute("""  
    CREATE TABLE IF NOT EXISTS customers (  
            id INTEGER PRIMARY KEY AUTOINCREMENT,  
            name TEXT,  
            surname TEXT  
    )  
    """)  
  
    cur.execute("""  
        CREATE TABLE IF NOT EXISTS orders (  
                id INTEGER PRIMARY KEY AUTOINCREMENT,  
                customer_id INTEGER  
        )  
        """)  
  
    cur.execute("""  
        CREATE TABLE IF NOT EXISTS sales (  
                product_id INTEGER PRIMARY KEY AUTOINCREMENT,  
                order_id INTEGER,  
                quantity INTEGER  
        )  
        """)  
  
    cur.execute("""  
            CREATE TABLE IF NOT EXISTS products (  
                    product_id INTEGER PRIMARY KEY AUTOINCREMENT,  
                    name TEXT,  
                    price INT  
            )  
            """)  
  
    cur.executemany("INSERT INTO products VALUES (NULL, ?, ?)", products_)  
    cur.executemany("INSERT INTO customers VALUES (NULL, ?, ?)", customers_)  
    cur.execute("""INSERT INTO orders (customer_id) SELECT id FROM customers   
    WHERE surname = 'Пивоваров' """)  
  
    cur.execute("""  
    INSERT INTO sales (product_id) SELECT product_id FROM products  
    WHERE name = 'Масло крестьянское'   
    -- как вставить в поле order_id ключ id из таблицы orders  
    -- и значение в поле quantity (количество)     
    """)  
  
    cur.execute("""  
    SELECT * FROM customers JOIN orders ON customers.id = orders.customer_id  
    """)  
  
    cur.execute("""  
    SELECT * FROM sales  
    """)  
    result = cur.fetchall()  
    print(result)

Ответы (1 шт):

Автор решения: Akina
INSERT INTO sales (product_id, order_id, quantity) 
SELECT products.product_id, orders.id, 123456
FROM products  
CROSS JOIN orders
WHERE products.name = 'Масло крестьянское' 
  AND orders.customer_id = 3

Примечание. Если условию orders.customer_id = 3 соответствует несколько записей (а это почти наверняка так), то их несколько и будет вставлено, что вряд ли правильно. Должен быть, вероятно, отбор по orders.id, либо какое-то дополнительное ограничение (скажем, запись с максимальным штампом времени создания), по которому выберется только одна запись из orders.

→ Ссылка