Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Bom, eu tenho duas tabelas no meu banco de dados
A "Parceiro" e "Planejamento"
Estou fazendo uma busca por todos os parceiros que sejam da Empresa X
**sql = "SELECT * FROM vw_parceiro where 1=1"**
if request("EmpresaNome") <> "" then
sql = sql & " and EmpresaNome like '" & request("EmpresaNome") & "%'"
sqlT = sqlT & " and EmpresaNome like '" & request("EmpresaNome") & "%'"
end if
set Aluno = GetRS(sql)
E após buscar esses alunos eu quero que me mostre em uma tabela os dados de planejamento deles.
**sql = "SELECT * FROM planejamento where id_parceiro ="&Aluno("id_parceiro")**
set Planejamento = GetRS(sql)
Porém quando eu peço para exibir em uma tabela, aparece apenas o planejamento de 1 aluno da minha primeira busca.
<% do while not Planejamento.EOF%>
**<tr>**
**<td class="cont1"> <%=Planejamento("id_planejamento")%> </td>**
**</tr>**
<%
Planejamento.MoveNext()
loop
%>
Imagino que seja porque não há um loop para mudar para o próximo parceiro; então como posso proceder?
Obrigado!
vc pode usar o INNER JOIN, você precisa ter uma relacionamento entre as tabelas, na verdade, a importância de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo
Isso, se estiver relacionado as tabelas o ideal é fazer o INNER JOIN.
Att;
você pode usar o INNER JOIN, você precisa ter uma relacionamento entre as tabelas, na verdade, a importância de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo
Teria algum link que explicasse como realizar o Inner Join?
Neste caso eu preciso que exiba todos os planejamentos dos alunos selecionados na busca.
Obrigado!
>
Isso, se estiver relacionado as tabelas o ideal é fazer o INNER JOIN.
Att;
Poderia me ajudar? Até então nunca havia utilizado o Inner Join
Fiz da seguinte forma:
sql = "SELECT * FROM planejamento INNER JOIN vw_parceiro ON planejamento.id_parceiro = vw_parceiro.id_parceiro"
sql = sql + " where vw_parceiro.EmpresaNome like '" & request("EmpresaNome") & "%'"
sqlT = sqlT & " and EmpresaNome like '" & request("EmpresaNome") & "%'"
set Planejamento = GetRS(sql)
E deu certo.
Porém quando quero exibir um dado que possui o mesmo nome nas duas tabelas, o me diz a seguinte mensagem "O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado."
Por exemplo, na tabela Parceiro e Planejamento, ambos possuem uma tabela chamada "tipo", quando tento exibir diz esta mensagem.
Como resolver?
Além disso, informações na tabela representadas por números, exemplo = "id_professor", normalmente eu busco na tabela de Professores pelo código que está no Planejamento e exibo o nome do mesmo.
Mas como o Loop é somente para o Planejamento, exibe os nomes duplicados de um único professor.
Como posso resolver isso?
Resolvido! Obrigado a todos pela ajuda :D
/applications/core/interface/imageproxy/imageproxy.php?img=https://scontent-mia1-1.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/11880385_954747897902340_1527116166135898121_n.jpg?oh=8302e6dc03d9b0073c65a3a18282479d%26oe=5637F8CB&key=e17e9bd8b75aebe5fbef0bbc526cf694c0598753c185cd41df0d04dec34468dd" alt="11880385_954747897902340_152711616613589" />
Se possível poste o código de como ficou resolvido.
Att;
Que bom que resolveu... e fique atento no tipo de relacionamento, pois ele influencia diretamente no seu desempenho de consulta.
Os relacionamentos entre dados de diferentes tabelas podem ser de três tipos:
- 1 1 (um para um);
- 1 N (um para vários) ;
- N N (vários para vários);
RELACIONAMENTO DO TIPO UM PARA UM
Este tipo de relacionamento se dá, de forma direta entre duas tabelas, quando a chave primária do registro de uma determinada tabela pode ser utilizada uma única vez em um dos registros da outra tabela. No exemplo que segue, tem-se duas tabelas, uma para cadastro de funcionários e outra para cadastro de cônjuges (esposa ou marido), sendo este, um típico exemplo de relacionamento um para um, pois neste caso, o código de cada cônjuge poderá ser especificado uma única vez na tabela de funcionários, visto que para cada funcionário existirá apenas um cônjuge.
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.rmfais.com/rmfais/artigos/006_relacionamentos_arquivos/image002.jpg&key=3d2e97751e94d6997fb2095213f2d1c55c2de6f5813a8cad2cc5538ce054810c" width="325" alt="image002.jpg" />
RELACIONAMENTO DO TIPO UM PARA VÁRIOS
Tipo de relacionamento que também acontece de forma direta entre duas tabelas sempre que a chave primária do registro de uma determinada tabela é utilizada várias vezes em outra tabela, sendo este, o tipo de relacionamento mais comum entre tabelas de um banco de dados relacional. O próximo exemplo mostra a relação entre uma tabela para cadastro de produtos e uma tabela para cadastro de fornecedores, onde um mesmo fornecedor vende vários produtos, podendo o seu código ser informado várias vezes em diferentes registros da tabela de produtos.
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.rmfais.com/rmfais/artigos/006_relacionamentos_arquivos/image004.jpg&key=fb8a37c38c7b9f6426fcb3621ef7710bc9878eade1de4694ccf09d29d3f8f908" width="360" alt="image004.jpg" />
RELACIONAMENTO DO TIPO VÁRIOS PARA VÁRIOS
È um tipo de relacionamento que acontece de forma indireta entre duas tabelas, pois para que ele possa ser concebido é necessário a geração de uma terceira tabela. Na prática o relacionamento vários para vários não existe de fato, o que existe é dois ou mais relacionamentos um para vários, que ganha o sentido de vários para vários. Ocorre sempre que surge a necessidade de se relacionar duas chaves primárias de registros de diferentes tabelas em vários registros de uma terceira tabela. O exemplo mostrado a seguir considera um sistema em que o cliente de uma empresa possa fazer reserva de produtos para serem comprados. Neste caso, tem-se uma tabela para cadastro de produtos, uma tabela para cadastro de clientes e uma tabela para registro de reservas. Observe que na tabela para registro de reservas, um mesmo cliente pode fazer reserva de vários produtos e um mesmo produto pode ser reservado por vários clientes. Com isso, surgem duas relações um para vários, que ganha o sentido de vários para vários.
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.rmfais.com/rmfais/artigos/006_relacionamentos_arquivos/image006.jpg&key=4754817173ad5374b5f6b05ee9c8edbe35db670f343454f39795ab4e3453813c" width="494" alt="image006.jpg" />
Convém destacar nos exemplos mostrados neste artigo, dois elementos vitais para o relacionamento de tabelas de dados, chave primária e chave estrangeira, onde chave primária é o principal campo dos registros de cada tabela, o campo que distingue cada registro de forma inequívoca, que nunca se repete dentro de uma mesma tabela, e chave estrangeira é a chave primária de uma tabela quando informada em outra tabela para estabelecer o relacionamento de dados.
O correto é vc colocar o select de busca dos planejamentos dentro do seu LOOP que mostra os alunos.
<% do while not Planejamento.EOF%>
sql = "SELECT * FROM planejamento where id_parceiro ="&Aluno("id_parceiro")
set Planejamento = GetRS(sql)
Planejamento.MoveNext()
loop
%>
Att;