Estoy luchando para que funcione la siguiente consulta SQL:
sql_query = f''' INSERT INTO table3(animal_id, fruit_id) SELECT table1.id, table2.id FROM table1 CROSS JOIN table2 WHERE table2.id = "{some_value}"; '''EDITAR: digamos que tenía las siguientes tres tablas:
1 ID ANIMAL 1 Cat 2 Dog 2 ID FRUIT 1 apple 2 orange 3 banana 3 ID ANIMAL FRUIT 1 Bird mango 2 Bird grape¿Cómo puedo hacer que cruce las columnas de animales y frutas de las tablas 1 y 2 y agregue el resultado a la tabla 3 pero solo para aquellas filas de la tabla 1 que igualan el valor especificado entre llaves, por ejemplo, aquí 'Perro'
3 ID ANIMAL FRUIT 1 Bird mango 2 Bird grape 3 Dog apple 4 Dog orange 5 Dog bananaSu código debería funcionar si usa comillas simples en lugar de dobles para el parámetro que pasa, pero no necesita la combinación CROSS si está seguro de que table2 contiene ese parámetro.
Puede simplificar el código a:
INSERT INTO table3 (ANIMAL, FRUIT) SELECT ANIMAL, 'Dog' FROM table1;Ver la demostración .