TL; DR: Comme @gmiley souligne le problème est provoqué par le nom de la colonne _ID
, ce qui est un identifiant ordinaire (voir la définition ci-dessous) et doit donc être entre guillemets "_ID"
ou guillemets simples '_ID'
dans vos instructions SQL.
select m.title, m.year, g.value
from MOVIES m
inner join MOVIES_GENRE g on m."_ID" = g."_ID";
Contrairement identificateurs ordinaires identificateurs entre guillemets sont sensibles à la casse ("_id"
est pas identique à "_ID"
que title
est identique à TITLE
). Si vous deviez spécifier "_id"
dans votre instruction, une erreur serait levée indiquant que la colonne n'a pas été trouvée. Puisque vous avez mentionné que vous avez utilisé le Cloudant warehousing process pour remplir vos tables DashDB, il vaut probablement la peine de mentionner que les noms de propriété sont en majuscules lorsque le DDL est généré lors de la découverte du schéma.
Exemple: Le contenu des documents JSON avec cette structure
{
"_id": "000018723bdb4f2b06f830f676cfafd6",
"_rev": "1-91f98642f125315b929be5b5436530e7",
"date_received": "2016-12-04T17:46:47.090Z",
...
}
sera mis en correspondance avec trois colonnes:
_ID
de type VARCHAR(...)
_REV
de type VARCHAR(...)
DATE_RECEIVED
de tapez ...
- ...
Espérons que cela aide!
De l'DB2 SQL reference:
Un identificateur ordinaire est une lettre majuscule suivie de zéro ou plusieurs caractères, dont chacun est une lettre majuscule, un chiffre ou un caractère de soulignement. Notez que les lettres minuscules peuvent être utilisées lors de la spécification d'un identifiant ordinaire, mais elles sont converties en majuscules lors du traitement. Un identifiant ordinaire ne devrait pas être un mot réservé.
Exemples: WKLYSAL
WKLY_SAL
Un identificateur délimité est une séquence d'un ou plusieurs caractères entourés par guillemets doubles. Les blancs principaux dans la séquence sont significatifs. Les espaces de fin dans la séquence ne sont pas significatifs, bien qu'ils soient stockés avec l'identificateur. Deux guillemets consécutifs sont utilisés pour représenter un guillemet dans l'identificateur délimité. De cette manière, un identifiant peut inclure des lettres minuscules.
Exemples: "WKLY_SAL"
"WKLY SAL"
"UNION"
"wkly_sal"
Recevez-vous une erreur spécifique? Si vous pensez que c'est le nom de la colonne '_id', vous pouvez essayer de placer des guillemets pour indiquer qu'il s'agit d'un nom d'objet:' internal join MOVIES_GENRE g sur m. "_ ID" = g. "_ ID"; Cependant, il est conseillé de renommer ces colonnes dans un format plus standard. – gmiley