Usuário com melhor resposta
SQL - procedure

Pergunta
-
SELECT c.*, a.*, b.sistema as ownarea, b.sis_id as ownarea_cod
FROM configusercall as c, sistemas as a, sistemas as b
WHERE c.conf_opentoarea = a.sis_id and c.conf_ownarea = b.sis_id and c.conf_cod = 1;Boa noite!
Caros amigos, poderia decifrar se for possivel o que esse codigo faz recebi esse codigo para implementar no meu sistema, mas não sei o que ele pretende fazer. Entendo muito pouco, não sei pq esta no comando c.* e todo o resto.
grato,
Respostas
-
Fera, é o seguinte: este comando simplesmente lê algumas informações de algumas tabelas. Segue explicação detalhada:
O comando "FROM" diz quais tabelas serão utilizadas: tabela configusercall, para a qual foi dado o "apelido" C; tabela sistemas, para a qual foi dado o "apelido" A; e novamente a tabela sistemas, desta vez com o "apelido" B.
No comando "SELECT", está a lista dos campos que deverá ser lida destas tabelas:
1) "c.*" representa todos (*) os campos da tabela C (configusercall);
2) "a.*" representa todos (*) os campos da tabela A (sistemas);
3) "b.sistema as ownarea" seleciona as informações do campo "sistema" da tabela B (sistemas), mas ao invés do título da coluna ficar "sistema", ela ficará com o nome dado no "as": ownarea;
4) "b.sis_id as ownarea_cod " seleciona as informações do campo "sis_id" da tabela B (sistemas), mas ao invés do título da coluna ficar "sis_id", ela ficará com o nome dado no "as": ownarea_cod.
"WHERE" significa "onde". Então tudo o que está depois deste comando são filtros e ligações entre estas tabelas.
1) "c.conf_opentoarea = a.sis_id": liga as tabelas C (configusercall) e A (sistemas) pelo campo "conf_opentoarea" e "sis_id", respectivamente.
2) "c.conf_ownarea = b.sis_id": liga as tabelas C (configusercall) e B (sistemas) pelo campo "conf_ownarea" e "sis_id", respectivamente.
3) "c.conf_cod = 1": filtra a tabela C (configusercall) para que sejam retornados apenas os registros que tiverem o campo ".conf_cod" igual a 1.
Roberson Ferreira
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta LSNNOVAES quinta-feira, 26 de maio de 2011 06:32
-
Se fizermos uma leitura direta, seria:
Este comando seleciona todos os registros da tabela configusercall, todos os registros da tabela sistemas e, de novo, os campos "sistema" e "sis_id" da tabela sistema, com os títulos "ownarea" e "ownarea_cod", respectivamente.Isso, respeitando os seguintes critérios: só seleciona os registros da tabela configusercall e da tabela sistema quando: 1) o campo "conf_opentoarea" da primeira e "sis_id" da segunda tiverem correspondência; 2) o campo "conf_ownarea" da primeira e "sis_id" da segunda tiverem correspondência. Além disso, só seleciona os registros da tabela configusercall que tiverem valor 1 no campo "conf_cod".
Roberson Ferreira
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta LSNNOVAES quinta-feira, 26 de maio de 2011 06:32
Todas as Respostas
-
Fera, é o seguinte: este comando simplesmente lê algumas informações de algumas tabelas. Segue explicação detalhada:
O comando "FROM" diz quais tabelas serão utilizadas: tabela configusercall, para a qual foi dado o "apelido" C; tabela sistemas, para a qual foi dado o "apelido" A; e novamente a tabela sistemas, desta vez com o "apelido" B.
No comando "SELECT", está a lista dos campos que deverá ser lida destas tabelas:
1) "c.*" representa todos (*) os campos da tabela C (configusercall);
2) "a.*" representa todos (*) os campos da tabela A (sistemas);
3) "b.sistema as ownarea" seleciona as informações do campo "sistema" da tabela B (sistemas), mas ao invés do título da coluna ficar "sistema", ela ficará com o nome dado no "as": ownarea;
4) "b.sis_id as ownarea_cod " seleciona as informações do campo "sis_id" da tabela B (sistemas), mas ao invés do título da coluna ficar "sis_id", ela ficará com o nome dado no "as": ownarea_cod.
"WHERE" significa "onde". Então tudo o que está depois deste comando são filtros e ligações entre estas tabelas.
1) "c.conf_opentoarea = a.sis_id": liga as tabelas C (configusercall) e A (sistemas) pelo campo "conf_opentoarea" e "sis_id", respectivamente.
2) "c.conf_ownarea = b.sis_id": liga as tabelas C (configusercall) e B (sistemas) pelo campo "conf_ownarea" e "sis_id", respectivamente.
3) "c.conf_cod = 1": filtra a tabela C (configusercall) para que sejam retornados apenas os registros que tiverem o campo ".conf_cod" igual a 1.
Roberson Ferreira
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta LSNNOVAES quinta-feira, 26 de maio de 2011 06:32
-
Se fizermos uma leitura direta, seria:
Este comando seleciona todos os registros da tabela configusercall, todos os registros da tabela sistemas e, de novo, os campos "sistema" e "sis_id" da tabela sistema, com os títulos "ownarea" e "ownarea_cod", respectivamente.Isso, respeitando os seguintes critérios: só seleciona os registros da tabela configusercall e da tabela sistema quando: 1) o campo "conf_opentoarea" da primeira e "sis_id" da segunda tiverem correspondência; 2) o campo "conf_ownarea" da primeira e "sis_id" da segunda tiverem correspondência. Além disso, só seleciona os registros da tabela configusercall que tiverem valor 1 no campo "conf_cod".
Roberson Ferreira
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta LSNNOVAES quinta-feira, 26 de maio de 2011 06:32