Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jerri Dick

Select em 2 Tabelas

Recommended Posts

Olá, a julgar pelo título, muitos dirão que ja existem milhares de tópicos sobre isto, porem, nenhum deles resolveu meu problema que é o seguinte:

Exemplo Tabela 1

CODE

user_id |nome |turma |check

1 |jerry |10 |0

2 |joão |10 |1

3 |carlos |7 |1

5 |jose |10 |1

6 |marcos |5 |0

7 |marcio |8 |1

8 |julio |9 |1

9 |julia |9 |0

10 |carla |7 |1

11 |cintia |3 |1

12 |marta |9 |0

Exemplo Tabela 2:

CODE

ver_id |tipo_v |user_id

1 |4 |3

2 |3 |4

3 |3 |10

4 |6 |7

5 |2 |5

6 |3 |9

7 |3 |8

8 |4 |1

9 |2 |2

10 |6 |6

11 |3 |12

12 |4 |11

O que quero fazer é o seguinte, em uma Query, gostaria de selecionar todos os campos da tabela1, onde o valor do campo "check" da tabela 1 fosse "1", e ao mesmo tempo o campo "tipo_v" da tabela 2 fosse = 3, não sei se consegui explicar bem o que eu gostaria, mas o retorno ficaria assim:

CODE

user_id |nome |turma |check

4 |cassio |7 |1

8 |julio |9 |1

12 |marta |9 |1

Ja tentei com JOIN, e com UNION(que deu problema por causa do diferente numero de campos entre as tabelas), porem, nenhum dos dois funcionou da maneira que precisava.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, fiz uma pequena modificação no exemplo das tabelas, acho que ficou + facil de entender, não sei uma maneira mais facil de explicar meu problema, acho que isso ajudaria:

Query que tentei usar, mas naumn funcionou, pois me retornou sómente o primeiro registro, porem repetido sempre repetido o numero de vezes que coloco no LIMIT.

 

"SELECT * FROM tabela1 AS tuser, tabela2 AS tverif WHERE (tuser.check =' 1') and (tverif.tipo_v = '3') ORDER BY user_id DESC LIMIT 0,10"

 

Tambem tentei:

 

(SELECT * FROM tabela1 WHERE (tabela1.check =' 1'))

UNION

(SELECT * FROM tabela2 WHERE (tabela2.tipo_v ='3')) ORDER BT user_id DESC LIMIT 0,10

 

Mas não obtive sucesso, por que dessa maneira, da erro por causa do numero diferente de campos entre as 2 tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, vi duas coisas em sua query. Você não colocou o relacionamento entre as tabelas, qual o campo que referencia uma com a outra, o id_user?

 

Se for, você deve fazer na clausula where o join - tuser.id_user = tverif.id_user

 

No caso do union, o erro que apareceu é pq os campos das duas querys devem conter o mesmo número de atributos. Você não poderá utilizar o * e em alguns BDS, os atributos devem conter o mesmo nome. Neste caso você deverá usar alias nos atributos, para deixalos iguais. Veja um exemplo:

 

select a.codigo as cod, a.nome_pessoa as nome, salario as sal

from pessoa a

union all

select b.cod_prestador as cod, a.nome_prestador as nome, sal_prestador as sal

from prestadores

 

Só um exemplinho, mas você deve usar este esquema.

 

Referente ao relacionamento, veja a questão do join.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.