Tem algo errado no meu comando SQL

O MySQL não esta conseguindo executar a linha abaixo, deve ter erro de sintaxe, qual a forma correta:

sql = "SELECT e.id, "
	+ "e.id_cliente, "
	+ "e.telefone, "
	+ "e.cep, "
	+ "e.endereco, "
	+ "e.numero, "
	+ "e.complemento, "
	+ "e.bairro, "
	+ "e.cidade, "
	+ "e.estado, "
	+ "c.nome_razao, "
	+ "FROM cli_entrega as e JOIN cliente as c "
	+ "ON e.id_cliente = c.id_cgc_cpf ORDER BY c.nome_razao;";

Comando básico:

SELECT CAMPOS FROM TABELA

você selecionou os campos mas, ANTES da clausula FROM NÃO TEM VIRGULA, a virgula no SELECT é para separar os campos que você está selecionando para o resultado.

sql = "SELECT e.id, "
	+ "e.id_cliente, "
	+ "e.telefone, "
	+ "e.cep, "
	+ "e.endereco, "
	+ "e.numero, "
	+ "e.complemento, "
	+ "e.bairro, "
	+ "e.cidade, "
	+ "e.estado, "
	+ "c.nome_razao " // REMOVI A VIRGULA QUE NÃO FAZ PARTE
	+ "FROM cli_entrega as e JOIN cliente as c "
	+ "ON e.id_cliente = c.id_cgc_cpf ORDER BY c.nome_razao;";

Não para para identificar mais problemas, que podem ser de grafia dos campos e talvez até outros, mas, de cara é a virgual antes do FROM.

Leitura recomendada:

1 curtida

Uma outra dica é sobre o alias da tabela. Não precisa do "AS" Ao invés de

SELECT columns FROM table AS tb; -- com o "AS" para tabela

pode ser:

SELECT columns FROM table tb; -- sem o "AS" para tabela

No final das contas o resultado é o mesmo. Porém, é mais difícil encontrar queries com o AS para definir alias para tabelas. É mais comum para colunas.

1 curtida

Bom eu não entendi bem o que você quis dizer de não utilizar AS na clausa FROM? é um boa prática e todos os Frameworks de Persistências utilizam para diferenciar quando se utilizam JOIN, LEFT e RIGHT, por exemplo.

Claro se tiver dizendo que a pesquisa tem somente uma tabela, não precisa, agora se tiver JOIN, varias junções etc, pode utilizar sem medo ou não, agora fica a cargo do desenvolvedor quando tiver campos com o mesmo nome e precisam relacionar várias tabelas, pela minha experiência eu acho muito util, mas, não é obrigatório.

2 curtidas