Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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.
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
ou eu nao entendi ou o exemplo nao eh compativel com o que você pediu