Du hast nicht die ALL
Teil mit INTERSECT
in Oracle
verwenden. ALL
wird mit UNION
, nicht mit INTERSECT
oder MINUS
verwendet. Probieren Sie es ohne ... (auch die Klammer sind unnötig, sie nichts schaden, nur nicht erforderlich):
select course_id
from section
where semester = 'FALL' AND year = 2009
intersect
select course_id
from section
where semester = 'SPRING' AND YEAR = 2010;
Offenbar PostgreSQL
unterstützt ALL
mit INTERSECT
, aber Oracle
nicht. Ich habe wo es die mimiced werden mit folgenden:
with intersect_tbl as
(
select course_id, row_number(partition by course_id) as rnum
from section
where semester = 'FALL' AND year = 2009
intersect
select course_id, row_number(partition by course_id) as rnum
from section
where semester = 'SPRING' AND YEAR = 2010
)
select course_id
from intersect_tbl;
Da Sie erwähnt, dass das Buch, das Sie Ihrem Beispiel gefunden in indem Sie Ihre Schule zugewiesen ist, würde ich mit ihnen klären, ob es ein bestimmtes DBMS ist, sollten Sie sein Verwenden für Ihre Klasse. Wie ich bereits erwähnte INTERSECT ALL
ist in PostgreSQL
verfügbar, so könnte es sein, dass sie beabsichtigen, dass Sie diesen Geschmack anstelle von Oracle
verwenden.
Was ist "alles überschneiden"? Habe nie davon gehört. Hast du das in dem Buch gelesen? – mathguy
Ja. https://www.amazon.com/Database-System-Concepts-Abraham-Silberschatz/dp/0073523321 –
Ernsthaft? Bist du sicher? Hast du nochmal im Buch nachgesehen? Übrigens, welchen SQL-Dialekt beansprucht das Buch? In Oracle gibt es kein "Alles überschneiden". – mathguy