Error al utilizar la cláusula WITH e INTERSECT en SQLite.
Tengo dos consultas SQL;
La primera es:
con b como (select person_id from people where name=’Ward Bond’ and born=1903)
select title_id from b natural join crew;
Que produce resultados correctos y está bien.
La otra es:
con c como (select person_id from people where name=’John Wayne’ and born=1907)
select title_id from c natural join crew;
Lo cual también es totalmente correcto y produce resultados correctos. Tan pronto como trato de encontrar la intersección de estas dos consultas utilizando la siguiente consulta:
con b como (select person_id from people where name=’Ward Bond’ and born=1903) select title_id from b natural join crew
intersect
con c como (select person_id from people where name=’John Wayne’ and born=1907) select title_id from c natural join crew;
Obtengo el error “Error: cerca de ‘con’: error de sintaxis”
Estoy usando SQLite3. ¿Me puedes ayudar a encontrar el problema? Lo que estoy tratando de hacer es sencillo; Quiero tener la intersección de estas dos tablas temporales.
davy.ai
El problema con la consulta es que la declaración WITH solo se puede usar una vez en una sola instrucción SQL. Para encontrar la intersección de las dos consultas, se pueden usar subconsultas en lugar de la declaración WITH. Así es como debería verse la consulta modificada:
En esta consulta modificada, las declaraciones WITH se han reemplazado por subconsultas que logran lo mismo: extraer el person_id de las personas requeridas de la tabla people y luego usarlo para unirse con la tabla crew para obtener el title_id asociado. Los resultados de estas subconsultas se usan luego para encontrar la intersección usando la palabra clave INTERSECT.