-1
votes

unique sur où la clause

J'ai essayé d'exécuter ce code avec Oracle 11G et une erreur se produise tout le temps qui est "ORA-00936: expression manquante" Je pense que le problème est avec une clause unique, mais je ne sais pas pourquoi. Des idées s'il vous plaît? xxx


6 commentaires

Quel tutoriel / Doc suivez-vous que les États-Unis sont un opérateur comme existant ou tout à Oracle? Curieux parce que je n'ai jamais connu que c'est un mot clé pour créer des contraintes / des index, etc.


Qu'essayez-vous de faire?


Je l'apprends au collage, je veux trouver les instructeurs qui n'ont cru qu'un seul cours en 2009


S'il vous plaît passer dans la clause où unique (sélectionnez des enseignements distincts.ID de enseigne où instructeur.id = enseigne.Id et année = 2009);


@APC, où l'état de requête unique Je ne pense pas que unique () fonctionner dans la requête.


@Jishansiddique - Non, cela ne fonctionne pas, c'est pourquoi le demandeur est ora-00936. Donc, je ne comprends pas ce que vous essayez de dire avec votre commentaire. L'ajout distinct dans la sous-requête ne fera que créer unique () plus valide comme syntaxe Oracle.


4 Réponses :


0
votes

Vraisemblablement, vous voulez des instructeurs qui enseigner une seule fois en 2009.

Si tel est le cas, vous pouvez le faire: P>

select i.id, i.name, i.dept_name, i.salary
from instructor i
inner join teaches t on t.instructor_id = i.id and t.year = 2009
group by i.id, i.name, i.dept_name, i.salary
having count(*) = 1


2 commentaires

Vous avez raison mais j'ai besoin de l'essayer avec une clause unique


@Programmer: il n'y a pas de clause unique dans Oracle; Unique peut être utilisé dans la définition des index, c'est à peu près tout. Vous pouvez voir d'autres réponses et commentaires mentionnez cela aussi.



0
votes

Je pense que vous voulez xxx

et vous où devrait être une déclaration "dans" qui


0 commentaires

0
votes

Explication de ce que vous voulez faire, ainsi que des données d'échantillonnage aideraient certainement; Tout ce que nous savons, c'est que vous avez écrit une requête qui n'est pas valide.

Pendant ce temps, une autre chanceuse devinez: xxx


0 commentaires

0
votes

"J'ai besoin de l'essayer avec une clause unique" p>

unique est pas fort> un opérateur. Ce que vous pouvez faire est celui-ci: p> xxx pré>

Cependant, l'unique est redondant, car cela a le même effet: P>

select id , name , dept_name , salary
from instructor 
where instructor.id in  (select teaches.id
                         from teaches 
                         where   year = 2009 
                         group by teaches.id having count(*) = 1 );


0 commentaires