[Resolvido] Select do grid dando erro ao usar join de tabelas

Alterei o select de uma aplicação grid pois precisava pegar o nome do cliente.
Como existe campos com nomes comuns entre pedido e clientes, coloquei o identificador
da tabela nos campos do select. Segue o select abaixo

SELECT
pedido.id,
pedido.empresa,
pedido.nroped,
pedido.datped,
pedido.idvendedor,
pedido.obs_app,
pedido.ped_vend,
pedido.situacao,
pedido.tab_nome_id,
clientes.nome
FROM
pedido
left outer join clientes on clientes.cliente = pedido.cliente

Esse select está correto e ok.
Só que em outras telas da aplicação grid, ele deveria levar esse identicador dos campos e não
leva de jeito nenhum. Ele não levando começa a ocorrer erros estranho que não sei onde corrigir.
Por outro lado, o campo clientes.nome não aparece para eu poder coloca-lo no grid.

O mais estranho, que já fiz isso com uma outra aplicação grid e ele colocou o identificador em todas as partes da aplicação e funciona direitinho.

Ah… já estou com a versão 9.10.

É uma pena que não consigo colocar a imagem da tela pois ficaria mais claro para mostrar.

@Jose_Carlos, experimente colocar alias em cada campo, tipo:

SELECT
pedido.id AS id,
pedido.empresa AS empresa,
...
...

E veja se funciona pra ti. Eu sempre uso alias nos campos, principalmente se estou utilizando tabelas relacionadas.

Kleyber, segui sua dica, mas erro continua

Ao alterar o sql e depois clicar em Salvar, vem esse erro

Fatal error: Uncaught Error: Call to a member function MoveNext() on bool in C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\lib\php\database.inc.php:2361 Stack trace: #0 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\compat\nm_select_atualiza.php(154): nm_db_fields_type(‘conn_pedido’, ‘UTF-8’, Object(ADODB_pdo), Object(nmConnection), ‘SELECT\n pedi…’, ‘’) #1 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\compat\nm_select_atualiza.php(2): sg_load(‘68ABBE04C7C5024…’) #2 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\class\interface\nmApplication.class.php(8345): include_once(‘C:\Program File…’) #3 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\class\interface\nmApplication.class.php(8266): nmApplication->UpdateFieldList() #4 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\class\page\nmPageApp.class.php(25087): nmApplication->SaveData(‘save’) #5 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\class\page\nmPage.class.php(2471): nmPageApp->DisplayContent() #6 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\class\page\nmSite.class.php(96): nmPage->Display() #7 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\lib\php\base_ini.inc.php(1654): nmSite->Run() #8 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\lib\php\base_ini.inc.php(2): sg_load(‘68ABBE04C7C5024…’) #9 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\iface\app.php(25): include_once(‘C:\Program File…’) #10 C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\iface\app.php(2): sg_load(‘BD8D7EBFC7C5120…’) #11 {main} thrown in C:\Program Files\NetMake\v9-php81\wwwroot\scriptcase\devel\lib\php\database.inc.php on line 2361

E o campo clientes.nome continua não aparecendo.

Como ficou teu select?

Ficou assim

SELECT
pedido.id as id,
pedido.empresa as empresa,
pedido.nroped as nroped,
pedido.datped as datped,
pedido.idvendedor as idvendedor,
pedido.datentr as datentr,
pedido.totped as totped,
pedido.sitped as sitped,
pedido.tipoper as tipoper,
pedido.desc_pac as desc_pac,
pedido.forma_id as forma_id,
pedido.obs_app as obs_app,
pedido.ped_vend as ped_vend,
pedido.situacao as situacao,
pedido.tab_nome_id as tab_nome_id,
clientes.nome as nome
FROM pedido
left outer join clientes on clientes.cliente = pedido.cliente

Estou acessando o banco de dados na hostgator

O mysql lá é o Percona e provávelmente tem algum problema com o “left outer join”

Mudei para o “Inner join” e funcionou.

Valeu Kleyber pela ajuda.

1 Curtida