Onde esta o erro?

Galera, estou com o seguinte problema, tenho duas tabelas uma com o nível de acesso dos usuários e uma de usuários, meu programa busca no banco o nivel de acesso e libera as telas de acordo com o nivel.

Acontece que ele esta trazendo somente os três primeiros.

Tabela nivel_usuario

` id serial NOT NULL,
  nivel character varying(20),
  CONSTRAINT pk_nivel PRIMARY KEY (id)`

Tabela usuarios

id serial NOT NULL,
  usuario character varying(50),
  senha character varying(25),
  id_nivel integer,
  CONSTRAINT pk_usuario PRIMARY KEY (id),
  CONSTRAINT fk_user_niv FOREIGN KEY (id_nivel)

busca:

select u.nivel from nivel_usuario u , usuarios us where usuario = ? AND us.id=u.id

dados tabela nivel_usuario

dados tabela usuarios:

Mas a pesquisa só retorna o id_nivel dos usuários admin, PAULO e teste, o teste 2 retorna vazio e se criar outros Usuários também não retorna nada.

Bom dia .

Por favor, dê uma olhada na minha query feita em Firebird abaixo e vê se é o que precisa.

select nivel_usuario.id_nivel, nivel_usuario.nivel
from temp_nivel_usuario nivel_usuario
inner join temp_usuario usuario on usuario.id_nivel = nivel_usuario.id_nivel
where usuario.usuario = :nome_usuario

Não entendi este temp_nivel…, eu tentei com inner join mas continua do mesmo jeito, só retorna o nivel dos 3 primeiros usuários.

Eu utilizei o banco de dados do trampo; e lá, tem o nome de tabelas parecida com o seu. Quanto ao inner join não resolver o seu caso, tá muito estranho.