Doubt SELECT Mysql

Asked

Viewed 53 times

-1

In a certain select I can reference two tables by foreign keys.

Ex:Ida/ Idb

Ida = Idb

Table A has a column called C
Table B has three columns called D, E, F
Both tables have similar contents to return in SELECT

Ex:

Select ... from table A a, table B b Where a.IdA = b.IdB and a.C = b.D and a.C = b.E and a.C = a.F...

When I set the condition And returns null When I put OR returns incomplete data, PQ?

  • Exemplify your structure better. Create a Sqlfiddle

  • Also say, what is the result you want!

2 answers

1

When you use "and" all combinations have to be true (same in your case).

In the OR the answer of the operation is true (1) if at least one of the input variables is true.

That’s why in or works and in and is giving null

  • If I put A.c = B.d returns more values than the three sentences with 'OR', when in my thought I should return more

0

 
Quando vc usa "AND", a busca retorna tudo que seja igual. Nesse caso, a.IdA = b.IdB "AND" a.C = b.D;
Isso esta dizendo que o resultado de que une a referencia a.IdA e b.IdB deve ser igual ao que une a.C e b.D;
No seu "WHERE" você esta fazendo isso para todas as tabelas a.IdA = b.IdB and a.C = b.D and a.C = b.E and a.C = a.F;
Logo, só vai ter um resultado, se por exemplo:
a.IdA = 1
b.IdB = 1
a.C = "TESTE"
b.D = "TESTE"
a.C = "TESTE"
b.E = "TESTE"
a.C = "TESTE"
a.F = "TESTE"
Quando você usa "OR", esta falando que pode retornar qualquer informação valida, exemplo:
a.IdA = 1
b.IdB = 1
a.C = "TESTE2"
b.D = "TESTE3"
a.C = "TESTE2"
b.E = "TESTE5"
a.C = "TESTE2"
a.F = "TESTE2"
Os resultados possíveis para " Where a.IdA = b.IdB or a.C = b.D or a.C = b.E or a.C = a.F"
1, TESTE2;
Aconselho usar "INNER" (join,left,right,outer), para unir tabelas de forma simples e organizada.
 

Browser other questions tagged

You are not signed in. Login or sign up in order to post.