Jump to content


Photo

Me Disseram Que é Um Select Combinado


  • Faça o login para participar
11 replies to this topic

#1 doltom

doltom

    12 Horas

  • Usuários
  • 219 posts
  • Sexo:Não informado

Posted 18/04/2007, 16:50

Pessoal, boa tarde.

Olhem essa imagem:

Posted Image

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?
Assinatura editada

Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 18/04/2007, 17:52

Como está a sua query?
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 doltom

doltom

    12 Horas

  • Usuários
  • 219 posts
  • Sexo:Não informado

Posted 19/04/2007, 12:36

SELECT * FROM news
Assinatura editada

Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.

#4 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 19/04/2007, 14:17

Você precisa fazer então uma junção de cada linha da tabela news com uma da tabela users, usando como critério o ID do usuário.

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
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#5 doltom

doltom

    12 Horas

  • Usuários
  • 219 posts
  • Sexo:Não informado

Posted 19/04/2007, 15:34

Eclesiastes, agradeço sua atenção.

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 :(
Assinatura editada

Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.

#6 Newbay

Newbay

    Normal

  • Usuários
  • 106 posts
  • Sexo:Não informado

Posted 19/04/2007, 16:25

o Id e o Nome estão em tabelas diferentes?
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 doltom

doltom

    12 Horas

  • Usuários
  • 219 posts
  • Sexo:Não informado

Posted 19/04/2007, 16:52

Eu acho que eu não consegui me expressar bem. Vou tentar.

Posted Image

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:

Posted Image

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
Assinatura editada

Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.

#8 Newbay

Newbay

    Normal

  • Usuários
  • 106 posts
  • Sexo:Não informado

Posted 19/04/2007, 18:15

Ah tá
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 replay

replay

    Agora a vida começa...

  • Usuários
  • 421 posts
  • Sexo:Não informado

Posted 20/04/2007, 06:18

ao inves de usar inner join ultilize left join...

Valeu :P
Não me adicione no MSN pq eu não vo te ajuda... se insistir eu vo ser grosso!!!
Ta com dúvida pergunta aqui no fórum...
Grato

#10 doltom

doltom

    12 Horas

  • Usuários
  • 219 posts
  • Sexo:Não informado

Posted 20/04/2007, 09:05

Acho que ainda não me entenderam... :( To desperado.

Vou tentar mais uma vez:

Posted Image

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:

Posted Image

Obrigado pela atenção pessoal!

DETALHE: O banco é ACCESS

Edição feita por: doltom, 20/04/2007, 09:37.

Assinatura editada

Por favor, somos um forum sério, faça uso de palavras mais apropriadas em sua assinatura.

#11 Newbay

Newbay

    Normal

  • Usuários
  • 106 posts
  • Sexo:Não informado

Posted 20/04/2007, 10:47

Select users.nome_user from news, user where user.ID_USER = SESSION(id_autor)

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 Elfarelo

Elfarelo

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 21/05/2007, 08:37

Eu acho que eu não consegui me expressar bem. Vou tentar.

Posted Image

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:

Posted Image

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)

IPB Skin By Virteq