“ORA-00913: trop de valeurs” erreur lorsque j'exécute la requête SQL
Que je suis un "trop grand nombre de valeurs" d'erreur et je ne suis pas sûr de la façon de l'aborder. Le problème commence à la première imbriquée SÉLECTIONNEZ
SELECT p.name, p.phone_number
FROM person p WHERE
(SELECT ks.title, ks.ks_code
FROM required_skills rs JOIN knowledge_skills ks USING (ks_code)
WHERE rs.pos_code = 'CS1')
IN (SELECT ks.title, ks.ks_code
FROM courses_taken ct JOIN course_learning_units clu
USING (c_code) JOIN learning_unit_skills lus USING (lu_code)
JOIN knowledge_skills ks USING (ks_code))
J'ai regardé info sur cette erreur et je crois que c'est parce que la sous-requête dans la là OÙ les rendements trop de colonnes. Les données du tableau ci-dessous. Mais comment puis-je whittle que vers le bas? J'apprécie tous les pointeurs, Grâce
required_skills
POS_CODE VARCHAR2(10 BYTE) Yes 1
KS_CODE VARCHAR2(10 BYTE) Yes 2
learning_unit_skills
LU_CODE VARCHAR2(10 BYTE) Yes 1
KS_CODE VARCHAR2(10 BYTE) Yes 2
personne
PER_ID NUMBER(38,0) No 1
NAME VARCHAR2(255 BYTE) Yes 2
STREET VARCHAR2(255 BYTE) Yes 3
CITY VARCHAR2(60 BYTE) Yes 4
ZIP_CODE VARCHAR2(60 BYTE) Yes 5
PHONE_NUMBER VARCHAR2(255 BYTE) Yes 6
GENDER VARCHAR2(6 BYTE) Yes 7
cours des unités d'apprentissage
C_CODE VARCHAR2(10 BYTE) Yes 1
LU_CODE VARCHAR2(10 BYTE) Yes
cours
C_CODE VARCHAR2(10 BYTE) Yes 1
PER_ID NUMBER(38,0) Yes 2
dans votre requête, après la première condition où il n'y a pas de champ ou de la colonne est mentionné
Comment sont vos autres tables liées à
Merci - oui, c'est par un courses_taken table
La sous-requête (précédant l'opérateur) ne retourne pas de "trop de colonnes", mais il renvoie trop de lignes.
Comment sont vos autres tables liées à
person
?Merci - oui, c'est par un courses_taken table
La sous-requête (précédant l'opérateur) ne retourne pas de "trop de colonnes", mais il renvoie trop de lignes.
OriginalL'auteur Coffee | 2011-12-02
Vous devez vous connecter pour publier un commentaire.
Un rapide réécriture:
ou de la (les jointures aurez probablement besoin de corrections):
Problème, c'est que dans ton code il n'y a pas de relation de table
person
. Je suppose que vous devriez avoir un seul dans les sous-requêtes - corrélés.Eh bien, vous avez probablement un
person_code
dans l'un de ces tableaux, dansrequired_skills
peut-être ou dansknowledge_skills
.Vous pouvez alors ajouter un
WHERE rs.person_code = p.person_code
dans la sous-requête.Je pensais que tu avais déjà. De toute façon, il est presque impossible pour nous de savoir quels champs appartiennent à la table, parce que vous n'utilisez pas
ON
maisUSING
Non,
USING
est plus compact. Si vous préférez, l'utiliser. Mais si vous voulez que nous pour mieux comprendre la structure, afficher les tables de la définition.OriginalL'auteur ypercubeᵀᴹ
utiliser "existe" au lieu de "dans" peut vous aider à
OriginalL'auteur Rashmi Kant Shrivastwa
lors de l'insertion de valeurs, il est en donnant de l'erreur de beaucoup de valeurs
J'ai un script de table de cette table lorsque je l'insère il donne beaucoup d'erreurs sur mon ordinateur, il fonctionne très bien
OriginalL'auteur sandeep chouhan