Jump to content


Photo

Pesquisa Em Mais De Uma Tabela


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

#1 blecki

blecki

    Turista

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

Posted 18/09/2004, 00:27

Olá,

eu achei varios topicos falando sobre isso, tentei todas as alternativas dadas mas nenhuma deu certo, entao peço que me ajudem


eu tenho 3 tabelas, por exemplo:

Mini, Super e Mega

eu quero listar um campo dessas 3 tabelas, por exemplo o campo Nome

aih eu abro a query, faço o select pras 3 tabelas, abro o while, e mando listah com o echo o que tiveh na coluna Nome nestas tabelas certo?

pois eh, eu fiz isso, seguindo os jeitos que vi nos outros topicos, mas nao deu certo, o problema fica quando eu abro o query, pra faze o select

ficaria imensamente agradecido se vocês pudessem por o codigo aqui, baseado no exemplo dessas 3 tabelas usando o campo nome, e me explicando pelo menos a parte do SELECT

pode ser?

obrigado
abraços

#2 fly2k

fly2k

    Super Veterano

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

Posted 18/09/2004, 12:17

Primeiro, coloque a estrutura de sua tabela aew pra gnte te ajudar!
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#3 blecki

blecki

    Turista

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

Posted 18/09/2004, 12:24

Seria isso

Tabela1: mini
Tabela2: super
Tabela3: mega

e cada uma delas tem varios campos mas creio que nao precise postah todos, aih em todas tem o campo ID e o campo NOME, e como eu quero listah nas 3, eu fiz pra quando adicionah o dado, ele contah o numero de dados de todas as tabelas e somah mais 1, e por no id, pra nao ficah repetido e dah conflito depois... tipo:

mini:

ID | NOME
1  | fulano
2  | ciclano

super:

ID | NOME
3  | maria
4  | josé

mega:

ID | NOME
5  | joao
6  | cristina


Aih eu queria que listasse o campo NOME de todas elas ordenada pelo id em ordem crescente :)

brigadão

#4 solon

solon

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado
  • Localidade:Itabaiana - Sergipe - Brasil

Posted 19/09/2004, 01:14

Também quero saber...

#5 thiagorsl

thiagorsl

    Ex-admin xD

  • Ex-Admins
  • 1151 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:http://sermaldito.amovoce.net/

Posted 20/09/2004, 14:14

select nome from mini,super,mega


Pronto :S

Basta usar essa query e o restante normalmente como faz com as outras

#6 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 21/09/2004, 09:58

select nome from mini,super,mega


Pronto :S

Basta usar essa query e o restante normalmente como faz com as outras

eu tinha tentado isso
ele diz que nome é ambiguo!!
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#7 fly2k

fly2k

    Super Veterano

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

Posted 21/09/2004, 11:09

tenta isso:

(SELECT * FROM mini) UNION (SELECT * FROM super) UNION (SELECT * FROM mega)
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#8 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 21/09/2004, 11:15

tenta isso:

(SELECT * FROM mini) UNION (SELECT * FROM super) UNION (SELECT * FROM mega)

Boa fly
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#9 blecki

blecki

    Turista

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

Posted 21/09/2004, 14:05

thiagorsl, o seu comando nao retorna nenhum erro, nem usando mysql_error, porém ele não lista nada, a página fica toda em branco

fly2k, se uma tabela tem mais colunas que a outra o comando UNION não funciona, infelizmente eu esqueci de colocah ali no post, mas as tabelas super e mega tem mais colunas que a mini

como eu usaria entao? :\

brigado a todos que estao tentando ajudar :)

#10 thiagorsl

thiagorsl

    Ex-admin xD

  • Ex-Admins
  • 1151 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:http://sermaldito.amovoce.net/

Posted 21/09/2004, 14:13

Eu pensei no UNION mas o problema dele é justamente esse mas você pode resolver dando os campos que deseja mostrar .....

(select nome from mini) UNION(select nome from super) UNION (select nome from mega)

A minha outra eu havia testado e tinha funfado :S

Depois vou confirmar em casa ela ¬¬

#11 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 21/09/2004, 14:37

Tenta Isso...
Eu num lembro mas como faz mas é ± por ai ...

SELECT MN.*, SP.*, MG.* FROM mini MN, super SP, mega MG GROUP BY MN.ID, SP.ID, MG.ID ORDER BY ID ASC;


#12 blecki

blecki

    Turista

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

Posted 21/09/2004, 18:32

thiagorsl, o UNION agora funcionou perfeitamente, mas quando eu tentei por um WHERE ele nao listo, porém nao apresentou erro também.
eu fiz assim
(SELECT id FROM mini WHERE sexo='feminino' ORDER BY id ASC) 
UNION
(SELECT id FROM super WHERE sexo='feminino' ORDER BY id ASC) 
UNION 
(SELECT id FROM mega WHERE sexo='feminino' ORDER BY id ASC)
assim ele nao lista e nao apresenta erros.. os campos estão corretos e aparentemente o codigo tambem está




sk15, o seu comando apresentou o campo ID como ambíguo, eu nao entendi =|


obrigado :)

Edição feita por: blecki, 21/09/2004, 18:34.


#13 Without a Nick

Without a Nick

    Sem culpa no cartório

  • Usuários
  • 2378 posts
  • Sexo:Não informado
  • Localidade:Guarulhos

Posted 04/12/2004, 18:20

Eu tentei usar o exemplo do thiago, mas no while, quando eu executo o mysql_fetch_array(), como eu posso fazer para imprimir os resultados sem repetição entre eles?

#14 brigman

brigman

    12 Horas

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

Posted 04/12/2004, 18:47

olhe, axo que da para fazer assim...


SELECT id.mega, id.super, id.mini FROM mega INNER JOIN super INNER JOIN mini WHERE ..... e se for td, coloque um * e siga com o from...

axo que resolve seu problema, n testei e faz maior tempão que n vejo sql, mas deve ser por aí...

#15 Without a Nick

Without a Nick

    Sem culpa no cartório

  • Usuários
  • 2378 posts
  • Sexo:Não informado
  • Localidade:Guarulhos

Posted 04/12/2004, 19:23

eu sei, mas o probls é:

eu faço a pesquisa no mysql e quero imprimir o id, nome e texto.

No caso estão iguais às três tabelas.

Não quero colocar classes (nomedatabela.nomedocampo), e sim, apenas id, nome, texto, de modo que no mysql_fetch_array() [q estará num loop WHILE] identifique sem que repita os resultados.

Pois se uma tabela tem 2 registros e a outra tem 1, então os registros da segunda tabela serão duplicados.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq