Tenho o seguinte SELECT:
ps = conexao.prepareStatement("SELECT controle.id_empresa, controle.id_vendedor, empresas.nome AS nome_emp, " +
"empresas.cnpj, vendedor.nome AS nome_vend, vendedor.senha, vendedor.bloqueado, vendedor.utilizado " +
"FROM controle " +
"LEFT OUTER JOIN empresas ON controle.id_empresa = empresas.id " +
"LEFT OUTER JOIN vendedor ON controle.id_vendedor = vendedor.id " +
"LEFT OUTER JOIN vendedor ON controle.id_empresa = vendedor.id_empresa " +
"WHERE controle.chave = ?");
Mas dá esse erro:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Not unique table/alias: 'vendedor'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1962)
at com.softcom.dao.ControleDAO.listarPorChave(ControleDAO.java:43)
Minha estrutura é essa:
Tabela Empresas:
id
nome
cnpj
Tabela Vendedor:
id_empresa
id
nome
senha
bloqueado
utilizado
Tabela Controle:
id
id_empresa
id_vendedor
chave
O campo chave é unique portanto o SELECT que estou tentando fazer precisa retornar apenas um registro…