Question

j'ai une requête SQL

select * from "Roles"  Join "Users"  On "Roles".Role="Users".RoleId

retourne la colonne d’erreur Roles.role n’existe pas

requête

select * from "Roles"  Join "Users"  On Roles.Role=Users.RoleId

retourne une entrée de la clause FROM manquante pour la table "rôles"

comment puis-je résoudre ce problème? je travaille toujours avec ms sql

Était-ce utile?

La solution

Vous ne pouvez pas utiliser le nom Roles dans la condition de jointure. En interne, tous les noms de table tels que Rôles, ROLES, rôles, RoLeS sont convertis en rôles (minuscules). Lorsque vous utilisez "Roles", "ROLES", "rôles", "RoLeS" le nom est utilisé exactement comme vous l'avez écrit (pas de conversion en minuscule), ainsi dans la partie FROM sont pris "Roles". et " Utilisateurs " tables et dans la condition de jointure, les noms de table sont des rôles et des utilisateurs, de tels tabulations n'existent pas.

La méthode la plus simple consiste à utiliser uniquement les noms de table sans """, utilisez simplement des rôles simples au lieu de "Roles". afin que vous puissiez écrire des rôles ou des rôles indépendamment des lettres minuscules / majuscules.

Autres conseils

écrivez-le comme ceci:

select * from Roles  INNER JOIN Users  On (Roles.Role= Users.RoleId)

consultez INNER JOIN deux tables pour plus d'informations. ..

ou vous pouvez utiliser la façon simple dont cela fonctionne avec la plupart des SGBD:

select * from Roles,Users where Roles.Role= Users.RoleId

Je soupçonne que vous deviez écrire "Rôles". "Rôle". = "Utilisateurs". "RoleId" , car il se plaint de ne pas pouvoir trouver le nom de la colonne en minuscule.

Comme d'autres l'ont déjà mentionné, il est généralement plus facile de tout créer en minuscule, même si vous utilisez une casse mixte dans les requêtes: donc, si la table s'appelle "Rôles". et la colonne " rôle " etc. vous pouvez écrire Roles.Role = Users.RoleId et les identifiants seront convertis en minuscules dans les coulisses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top