Ir para conteúdo
Fórum Script Brasil
  • 0

Explicação de consulta SQL


Musashi_RS

Pergunta

Olá, estou tendo dificuldades em compreender esta consulta SQL. Não entendi por que é preciso criar tabelas virtuais nesta ocnsulta. Observe, na primeira linha, a consulta se refere a uma tabela que não existe (tbl_cor), visto que é uma tabela "virtual" criada na consulta. Por que não se coloca o nome verdadeiro da tabela, visto que na 4ª, 5ª e 6ª linha as tabelas estão com os nomes verdadeiros?

Suponho que é nas linhas 9 e 11 que elas são associadas. Certo?

Já na linha7, não entendi aquele "UF", pois não sei onde ela se associa com uma tabela de verdade.

SELECT tbl_cor.codcorr, tbl_cor.codcur, tbl_cor.codcurexp, tbl_cor.codrem,

tbl_cor.nome, tbl_cor.nota, tbl_cor.data, tbl_cor.matricula,

tbl_cor.alternativas, tbl_cor.erradas, tbl_cor.tipo,

tabcurso.nome,

tabdisc.nome, tabdisc.CdDiscExp,

tabgab.nome, tabgab.CdGabExp,

UF, tablocalidade.ds_localidade

FROM

tabcorr tbl_cor

LEFT JOIN

tabLocalidade tbl_loc

ON

tbl_cor.cd_localidade = tbl_loc.cd_localidade,

Tabcurso tbl_cur, tabdisc tbl_disc, tabgab tbl_gab

WHERE

tbl_cor.codcur = tbl_cur.codcur

AND

tbl_cor.coddisc = tbl_disc.coddisc

AND

tbl_cor.codgab = tbl_gab.codgab

TABELAS VIRTUAIS E SUAS SUPOSTAS ASSOCIAÇÕES:

====================================

tbl_cor --> TabCorr.DB

UF --> TabUF.DB

tbl_loc --> tabLocalidade.DB

TABELAS PARADOX: (FÍSICAS)

====================

TabArqCon.DB

TabCom.DB

TabCons.DB

TabCorr.DB

TabCurso.DB

TabCursoExp.DB

TabDisc.DB

TabFontes.DB

TabGab.DB

TabInterv.DB

TabLocalidade.DB

tabProf.DB

TabProfDisc.DB

TabQues.DB

tabrem.DB

TabRemessa.DB

TabUF.DB

Se alguém puder me dar uma ajudinha eu agradeço. Vlw :rolleyes:

Editado por Musashi_RS
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá, estou tendo dificuldades em compreender esta consulta SQL. Não entendi por que é preciso criar tabelas virtuais nesta ocnsulta. Observe, na primeira linha, a consulta se refere a uma tabela que não existe (tbl_cor), visto que é uma tabela "virtual" criada na consulta. Por que não se coloca o nome verdadeiro da tabela, visto que na 4ª, 5ª e 6ª linha as tabelas estão com os nomes verdadeiros?

Suponho que é nas linhas 9 e 11 que elas são associadas. Certo?

Já na linha7, não entendi aquele "UF", pois não sei onde ela se associa com uma tabela de verdade.

a consulta se refere a uma tabela que não existe (tbl_cor)

Realmente não existe uma tabela (tbl_cor) ...mas um nome que faz uma referencia a tabela (FROM

tabcorr tbl_cor ) onde o nome da tabela é tabcorr

da mesma maneira foi feita uma referencia a tabela tabLocalidade ( LEFT JOIN tabLocalidade tbl_loc )

Por que não se coloca o nome verdadeiro da tabela ? porque isto varia de progamador para programador, alguns gostam de fazer assim outros não.

Um exemplo bem simples:

SELECT ID.PAPEL, ID.COD, ID.NUM
FROM  Acoes ID

Imaginemos que sua tabela se chama Acoes.DB... e voce resolve referenciar esta tabela com outro nome ( ID ) para que fique mais facil identifica-la

neste caso voce perceberá que o ID é nova a referencia para a tabela e seus campos... faça o teste .... se retirar o nome do identificador da tabela ( FROM Acoes ID ) deixando asssim ( FROM Acoes ) e mantendo o ID como referencia nos campos, provocará um erro ( Invalid field name ) ao ativar a select.

Trabalhando com duas ou mais tabelas

Sintaxe:

SELECT <var1>.<coluna1>, <var1>.<coluna2>, ...,

<var2>.<coluna1>, <var2>.<coluna2>, ...

FROM <tabela1> <var1>, <tabela2> <var2>, ...

[WHERE <condição>]

Sempre que nós desejamos trabalhar com duas ou mais tabelas, devemos informar isto através da cláusula FROM, colocando a lista de tabelas desejadas separadas por vírgula.

As colunas selecionadas aparecem na ordem indicada.

A ordem indicada independe das tabelas a que as colunas pertencem.

A cláusula WHERE, geralmente, especifica alguma condição de relacionamento entre as duas tabelas. Se não existir condições de relacionamento, todas as combinações possíveis entre as linhas das tabelas, indicadas na cláusula FROM, serão retornadas (Produto Cartesiano).

Se SELECT * for utilizado, todas as colunas das tabelas selecionadas serão mostradas.

No caso de existir colunas com o mesmo nome nas duas tabelas, ela deverá ser qualificada com o nome da tabela.

Mais informações

http://www.geocities.com/overond/DELPHI3apost.html

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...