Me Disseram Que é Um Select Combinado
#1
Posted 18/04/2007, 16:50
Olhem essa imagem:
Toda informação aí, vem da tabela NEWS, inclusive o ID do cliente (que eu grifei em verde).
O que eu preciso, é CAPTURAR O NOME DO CLIENTE pelo ID dele (no exemplo ai, é o ID 4) que vem de outra tabela. A tabela USERS:
tabela Users:
id, nome
1, joao
2, ciclano
3, beltrano
4, admin
Como eu monto a CLAUSULA?
Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.
#2
Posted 18/04/2007, 17:52
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#3
Posted 19/04/2007, 12:36
Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.
#4
Posted 19/04/2007, 14:17
O que pode ser feito da seguinte forma:
SELECT n.*, u.nome FROM news AS n INNER JOIN users AS u ON u.id = n.id_user
Onde n.id_user está indicado o campo da tabela news que possui o id do usuário.
Para melhor entender como utilizar cada tipo de join, recomendo o artigo: http://www.devmedia....p.asp?comp=2507
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#5
Posted 19/04/2007, 15:34
Como você colocou, criei a seguinte clausula:
"SELECT news.*, users.name_users FROM news AS n INNER JOIN sers AS u ON u.id_users = ews.id_autor_news"
mas não retornou nada, nem as noticias do banco news
Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.
#6
Posted 19/04/2007, 16:25
Pq ai no seu exemplo estão so 2 na mesma tabela, tabela users... claro que em colunas diferentes.
Desculpe se entendi mal, mas pareçe estar na mesma tabela, como vc colocou
tabela Users:
id, nome
1, joao
2, ciclano
3, beltrano
4, admin
Se for na mesma tabela usa assim
record=server.createObject("ADODB.RecordSet")
variavel = Select nome,id from users
record.open variavel , "varaivel da conexao com o banco " -> sem as aspas
ai pra vc pegar o id e o nome.. pra por tipo ai numa tabela vc poe +- assim vai só um rascunho mal feito
<table>
do while not record.fields.EOF then
<tr><td>record.fields("id")</td> <td> record.fields("nome")</td></tr></table>
wend
record.movenext
loop
Assim vc pega o Id e o nome da tabela users.
Se não for isso... desculpe o mal entendido!
#7
Posted 19/04/2007, 16:52
Na imagem acima eu estou pegando as noticias da tabela NEWS. a tabela news contem:
id, titulo, data, corpo, id_autor
O id_autor é onde aparece o 4 na imagem. Ou seja, quando um usuario insere um noticia, ele insere o ID do usuario logado no momento, que no caso foi o ID 4 (que tem nome admin).
Por quê eu não gravei o nome ao invez do ID. Imagine que o usuario atualize o nome dele. As noticias anteriores ficariam com o nome antigo. Então eu estou gravando o ID. Por quê:
Eu quero pegar sempre o nome atualizado do usuário. So que o nome dele esta na tabela USERS. Entao eu quero que nesta imagem acima, no lugar do ID aparecesse o Nome do usuario.
Então eu gostaria que exibisse assim:
Ou seja, as noticias iriam ser exibidas normalmente, pegando todas a snoticias da tabela NEWS nao importando o usuario que a isneriu, mas ao invez de mostrar o ID do cara que inseriu, mostrasse o nome dele.
Abraços
Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.
#8
Posted 19/04/2007, 18:15
desculpa
vc ta´relacionando as 2 tabelas pelo ID_AUTOR da tabela news e pelo ID da tabela users certo?
então no select vc tem que por algo do tipo
Select id_autor, nome from news, users where news.id_autor = users.nome
se nao der tente com
Select id_autor, * from news, users where news.id_autor = users.nome
e pra mostra faria
recordset.fields("nome")
Acho que deve dar certo.
falow
#9
Posted 20/04/2007, 06:18
Valeu
Ta com dúvida pergunta aqui no fórum...
Grato
#10
Posted 20/04/2007, 09:05
Vou tentar mais uma vez:
O SELECT utilizado na figura acima foi:
SELECT * FROM NEWS
Ok! Exibiu todas as noticias.
A Tabela NEWS:
id, titulo, id_autor
Quando alguém registra uma nova notícia nessa tabela, a SQL é:
INSERT INTO NEWS (titulo,id_autor) VALUES ('" & titulo & "', '" & SESSION(id_autor) & "')
Ou seja, para identificar o usuário que a postou, eu gravo o ID (de sessão) dele. O que tiver logado no momento. No caso da imagem acima, é o usuário de ID 4.
NA tabela USER o nome referente a esse ID é ADMIN. ENtão...
id_user, nome_user
4 , admin
Eu gostaria de usar uma clausula que exibisse toda a notícia normalmente, e também que ao mesmo tempo exibisse já o nome do Usuario que esta relacionado a esse ID.
Uma clausula que retornasse:
Obrigado pela atenção pessoal!
DETALHE: O banco é ACCESS
Edição feita por: doltom, 20/04/2007, 09:37.
Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.
#11
Posted 20/04/2007, 10:47
aki tá falando pra vc pegar o nome_usuario da tabela usuario, onde a sessão for igual ao id da sessao
ficaria
seleciona o NOME DO USUÁRIOS da tabela USER onde o campo ID da tabela USER for igual a número da sessao do id autor
ficaria
seleciona o NOME DO USUÁRIOS da tabela USER onde o campo ID da tabela USER for igual a 4
só nao tenho certeza do que está antes do from.
mas que a clausula selsect assim funciona tenho certeza pois uso assim.
tenta desses jeitos tb que algum deles funciona.... eu acho que de la de cima funciona... mas...
select id_autor, * from ....
select nome_user from user where id_user = SESSION(id_autor)
Acho que esse daqui funciona.
Toamra que de certo...
falow
Edição feita por: Newbay, 20/04/2007, 10:54.
#12
Posted 21/05/2007, 08:37
Eu acho que eu não consegui me expressar bem. Vou tentar.
Na imagem acima eu estou pegando as noticias da tabela NEWS. a tabela news contem:
id, titulo, data, corpo, id_autor
O id_autor é onde aparece o 4 na imagem. Ou seja, quando um usuario insere um noticia, ele insere o ID do usuario logado no momento, que no caso foi o ID 4 (que tem nome admin).
Por quê eu não gravei o nome ao invez do ID. Imagine que o usuario atualize o nome dele. As noticias anteriores ficariam com o nome antigo. Então eu estou gravando o ID. Por quê:
Eu quero pegar sempre o nome atualizado do usuário. So que o nome dele esta na tabela USERS. Entao eu quero que nesta imagem acima, no lugar do ID aparecesse o Nome do usuario.
Então eu gostaria que exibisse assim:
Ou seja, as noticias iriam ser exibidas normalmente, pegando todas a snoticias da tabela NEWS nao importando o usuario que a isneriu, mas ao invez de mostrar o ID do cara que inseriu, mostrasse o nome dele.
Abraços
SELECT * FROM Users, News WHERE users_id = news_id_autor
Onde users_id é o campo id da tabela users
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)