Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jackwalker

Sintaxe SQL2

Recommended Posts

Está dando erro um comando SQL que acessa aos registros da tabela ACESSO,aí está ele:

Erro

consulta SQL:

SELECT acesso.descricao AS acesso,
FROM acesso, situacao, gpacesso_acao, grupo_acesso, usuario_gpacesso, usuario
WHERE 1 = usuario.id_usuario
AND usuario.id_usuario = usuario_gpacesso.id_usuario
AND usuario_gpacesso.id_grupoacesso = grupo_acesso.id_grupoacesso
AND grupo_acesso.id_grupoacesso = gpacesso_acao.id_grupoacesso
AND gpacesso_acao.id_acesso = acesso.id_acesso acesso.id_situacao = situacao.id_situacao
LIMIT 0 , 30

Mensagens do MySQL : Documentação
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM  acesso ,  situacao ,  gpacesso_acao ,  grupo_acesso ,  usuario_gpacesso , ' at line 1

Quero que o USUÁRIO tem acesso aos registro desta tabela se ele foi cadastrado para tal registro.Ex:

O USUÁRIO que faz parte do GRUPO_ACESSO Venda ele só terá acesso a tabela Venda,assim como o que faz parte do GRUPO_ACESSO Estoque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca isto

WHERE 1 = usuario.id_usuario

 

Por isto

WHERE usuario.id_usuario = 1

 

E isto

AND gpacesso_acao.id_acesso = acesso.id_acesso acesso.id_situacao = situacao.id_situacao

 

Tá bem estranho... Dá uma revisada na tua query... Veja sobre JOIN.

 

http://dev.mysql.com/doc/refman/5.0/en/join.html

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro avisado esta na virgula sobrendo antes do FROM

 

SELECT acesso.descricao AS acesso,
FROM

 

pode até aparecer outro depois mas o erro atual é esse e está na mensagem de erro o aviso

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM acesso , situacao , gpacesso_acao , grupo_acesso , usuario_gpacesso , ' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal eu tenho as seguintes tabelas:

USUARIO(id_usuario,id_filial,nome);

FILIAL(id_filial,id_matriz,descricao);

MATRIZ(id_matriz,descricao);

USUARIO_GPACESSO(id_grupoacesso,id_usuario,id_filial);

GRUPO_ACESSO(id_grupoacesso,descricao);

 

E coloquei esse comando no MySQL para que o USUÁRIO visualize só a MATRIZ que está referente a FILIAL que ele foi cadastrado,e se ele tem acesso a essa FILIAL,pois o GRUPO DE ACESSO que dará essa condição:

SELECT  
 
 matriz.descricao as matriz
FROM
 matriz,
 filial,
 usuario,
 usuario_gpacesso,
 grupo_acesso
WHERE
 usuario.id_usuario=2
 AND usuario.id_usuario=usuario_gpacesso.id_usuario
 AND usuario_gpacesso.id_grupoacesso=grupo_acesso.id_grupoacesso
 AND usuario.id_filial=filial.id_filial
 AND filial.id_matriz=matriz.id_matriz
Dá certo o comando no SGBD,só que no filtro da Datagrid esse comando não é reconhecido, ou será que o comando SQL está errado ou será que é a Datagrid?Por favor me ajudem.

aí está o site do pessoal que criou a Datagrid:

http://www.apphp.com/php-datagrid/index.php?

 

De uma olhada na sintaxe PHP desta tabela que tem esse filtro:

$filtering_fields =
	array
		(
			"Matriz"=>array("table"=>"matriz","source"=>"self","type"=>"dropdownlist","field"=>"descricao","condition"=>"matriz.id_matriz='$sql1'"),
			"Situação"=>array("table"=>"situacao", "field"=>"descricao", "source"=>"self","type"=>"dropdownlist"),
		);

		
		
$dgrid->setFieldsFiltering($filtering_fields);

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro acusa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro acusa?

Olá Mário

Eu já mudei o sinal da condição para:igual simples(=) e igual duplo(==),mas não mostra nenhum resultado.Ele só mostra valor quando uso os sinais:>,<> e >=,neste caso ele mostra todos os valores.

$filtering_fields =

array

(

"Matriz"=>array("table"=>"matriz","source"=>"self","type"=>"dropdownlist","field"=>"descricao","condition"=>"matriz.id_matriz='$sql1' "),

"Situação"=>array("table"=>"situacao", "field"=>"descricao", "source"=>"self","type"=>"dropdownlist"),

);

 

 

 

$dgrid->setFieldsFiltering($filtering_fields);

 

Já usei até o INNER JOIN e não da certo,observe aí o comandos:

SELECT 
		matriz.descricao AS matriz
	FROM 
		matriz
	INNER JOIN 
		filial ON 
		matriz.id_matriz = filial.id_filial
	INNER JOIN 
		situacao ON 
		filial.id_situacao = situacao.id_situacao
	INNER JOIN 
		usuario ON 
		situacao.id_situacao = usuario.id_situacao
	INNER JOIN 
		usuario_gpacesso ON 
		usuario.id_usuario = usuario_gpacesso.id_usuario
	INNER JOINT 
		grupo_acesso ON
		usuario_gpacesso.id_grupoacesso = grupo_acesso.id_grupoacesso
	WHERE 
		usuario.id_usuario=2
		AND matriz.id_matriz = filial.id_matriz 
		AND filial.id_filial = usuario_gpacesso.id_filial
		AND matriz.id_situacao = situacao.id_situacao
		AND usuario.id_usuario = usuario_gpacesso.id_usuario

Compartilhar este post


Link para o post
Compartilhar em outros sites

melhor mover para o fórum da linguagem pois ao que parece não é mais erro de DB

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mário Monteiro,será que você ou alguém que esteja lendo esse Post auxilie-me,neste comando.

Quero saber que tipo de aplicação MySQL poderei usar para que o resultado do 'SELECT' dado na base de dados passe prá uma variável que criei.

Já utilizei esses exemplos e não deu certo:

 

$sql = "
SELECT  
 
 filial.id_filial
FROM
  filial,
 usuario,
 usuario_gpacesso,
 grupo_acesso
WHERE
 usuario.id_usuario=2
 AND usuario.id_usuario=usuario_gpacesso.id_usuario
 AND usuario_gpacesso.id_grupoacesso=grupo_acesso.id_grupoacesso
 AND usuario.id_filial=filial.id_filial
  ";

$result = mysql_query($sql); ou $result = mysqli_debug($sql)

$filtering_fields = array
	(
		"Filial"=>array("table"=>"filial", "field"=>"descricao", "source"=>"self", "type"=>"dropdownlist",[b]"condition"=>"filial.id_filial='$result'"[/b]),
 		"Matriz"=>array("table"=>"matriz", "field"=>"descricao", "source"=>"self", "type"=>"dropdownlist")//,"condition"=>"matriz.id_matriz='$result'")
	);

Também já até utililizei o GROUP BY no comando SQL.

OBS:Só que na aplicação 'mysqli_debug',mostrar o primeiro(id_filial=1) valor,não mostra o valor dos outros Usuários quando entra no sistema.

Agora na aplicação 'mysql_query' dá esse tipo de resultado na condição da Datagrid:

Resource id #12

Só que não mostra nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT acesso.descricao AS acesso

FROM acesso, situacao, gpacesso_acao, grupo_acesso, usuario_gpacesso, usuario

WHERE 1 = usuario.id_usuario

AND usuario.id_usuario = usuario_gpacesso.id_usuario

AND usuario_gpacesso.id_grupoacesso = grupo_acesso.id_grupoacesso

AND grupo_acesso.id_grupoacesso = gpacesso_acao.id_grupoacesso

AND gpacesso_acao.id_acesso = acesso.id_acesso acesso.id_situacao = situacao.id_situacao

LIMIT 0 , 30

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.