Domanda

Ho una query SQL

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

restituisce la colonna di errore Roles.role non esiste

query

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

errore di restituzione mancante nella voce della clausola FROM per la tabella "ruoli"

come posso risolvere questo problema? lavoro sempre con ms sql

È stato utile?

Soluzione

Non è possibile utilizzare il nome Ruoli nella condizione di join. Internamente tutti i nomi di tabella come ruoli, ruoli, ruoli e RoLeS vengono convertiti in ruoli (lettere minuscole). Quando usi "Ruoli", "RUOLI", "Ruoli", "RoLeS" il nome viene usato esattamente come hai scritto (nessuna conversione minuscola), quindi nella parte FROM vengono presi " Ruoli " e " Utenti " tabelle e nella condizione di join i nomi delle tabelle sono ruoli e utenti e tali tabelle non esistono.

Il modo semplice è usare solo i nomi delle tabelle senza " " ;, basta usare ruoli semplici invece di " Ruoli " così puoi scrivere ruoli o ruoli indipendentemente dalle lettere minuscole / maiuscole.

Altri suggerimenti

scrivilo in questo modo:

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

controlla INNER JOIN due tabelle per maggiori informazioni. ..

oppure puoi usare il modo semplice che funziona con la maggior parte dei DBMS:

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

Sospetto che dovessi scrivere " Roles ". & Role; Role " = " Users ". " RoleId " , perché si lamenta di non riuscire a trovare il nome della colonna minuscola.

Come altri hanno già detto, di solito è più semplice creare tutto in lettere minuscole, anche se si usano maiuscole e minuscole nelle query: quindi se la tabella viene chiamata "ruoli" e la colonna "ruolo" ecc. puoi scrivere Roles.Role = Users.RoleId e gli identificatori verranno convertiti in minuscolo dietro le quinte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top