Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Ahmed Mohamed Fouad
11,735 PuntosSQL Playground - Práctica de Operaciones de Conjuntos (segunda pregunta)
La Pregunta:
ENCONTRAR LIBROS ÚNICOS
Mi respuesta:
SELECT title FROM books_north EXCEPT SELECT title FROM books_south
y no creo que esta respuesta sea correcta, ¿podrías ayudarme?
7 respuestas
Steven Parker
244 163 puntosEstás cerca, pero necesitas ese último EXCEPT para ocurrir antes el UNION. Una subconsulta o tabla derivada ayudaría:
SELECT title FROM books_north EXCEPT SELECT title FROM books_south
UNION
SELECT title FROM (SELECT title FROM books_south EXCEPT SELECT title FROM books_north);
Pero esas técnicas aún no han sido introducidas. Sin adelantarse, puedes hacerlo usando una JOIN:
SELECT title FROM books_south UNION SELECT title FROM books_north
EXCEPT
SELECT books_south.title FROM books_south
INNER JOIN books_north ON books_south.title = books_north.title;
Ahmed Mohamed Fouad
11,735 PuntosGracias Steven, tus respuestas siempre son las mejores, fáciles de entender y directo al punto
ryanosten
Desarrollo PHP Estudiante de Techdegree 29.615 PuntosNo entiendo por qué esta consulta no funciona. Veo que los resultados son solo los que están en el sur pero no en el norte, pero no entiendo por qué. ¿No debería unir tanto (a) los que están en el norte pero no en el sur como (b) los que están en el sur pero no en el norte?
SELECT title FROM books_north EXCEPT SELECT title FROM books_south
UNION
SELECT title FROM books_south EXCEPT SELECT title FROM books_north;
ryanosten
Desarrollo PHP Estudiante de Techdegree 29.615 PuntosCreo que es algo con el orden de operaciones
ryanosten
Desarrollo PHP Estudiante de Techdegree 29.615 Puntosnevermind, veo por qué.
kevin hudson
Estudiante de Cursos Plus 11,987 PuntosPodría estar equivocado aquí, pero mi respuesta (después de revisar ambas tablas manualmente) solo produjo tres resultados que parecen ser correctos, así que la respuesta correcta debería ser:
-- Crea una lista de libros únicos.
-- Libros que están en la ubicación norte o sur, pero no en ambas ubicaciones.
SELECT title,autor FROM books_north EXCEPT
SELECT title,autor FROM books_south ORDER BY title;
Steven Parker
244 163 puntosEso te da los 3 libros en la ubicación Norte que no están en el Sur, pero hay 3 más en el Sur que no están en el Norte. La lista total de libros únicos tendrá 6 elementos.
kevin hudson
Estudiante de Cursos Plus 11,987 PuntosSí, hablé demasiado rápido pero decidí dejar mi respuesta para ayudar a entender mejor el problema. Creo que la pregunta se siente fuera de alcance si estás siguiendo, tienes que incluir un INNER JOIN en algún lugar y, como dijiste, el ejemplo de subconsulta funcionará pero no fue cubierto en ese momento. Acabo de repasar subconsultas.

Mark Chesney
11,747 PuntosMark Chesney
11,747 PuntosHola Ahmed,
Realmente me gustó tu respuesta... porque llegué a la misma conclusión también... desafortunadamente, sin éxito :\
Como probablemente hayas observado (pero esto es para el conocimiento de todos los demás), las siguientes dos consultas devuelven los mismos resultados:
Mi única solución a esta misma pregunta se encuentra en dos consultas separadas, desafortunadamente: