Relationship between tables

3

I have the following tables:

TB_ESTOQUE
|COD_PRODUTO|QT_DISPONIVEL|COD_FILIAL|
|  0856322  |      5      |    41    |
|  0856351  |      2      |    41    |
|  0856322  |      9      |    114   |
|  0856720  |      3      |    20    |
|  0856322  |      8      |    128   |
|  0856322  |      12     |     35   |
|  0856322  |      4      |     9    |

TB_FILIAL
|COD_FILIAL|COD_LOCALADM| 
|    41    |    114     |
|    128   |    114     |  
|    114   |    114     |
|    10    |    156     |
|    56    |     12     |
|    35    |     12     |
|    9     |     12     |

TB_PRODUTO
|COD_PRODUTO|DESC_PRODUTO|
|  0856322  | CALCARIO   |
|  0856351  | ZINCO      |
|  0856321  | SEMENTE    |
|  0856720  | INSETICIDA |
|  0856752  | STE SOJA   |

Tabela desejada:
|COD_PRODUTO|DESC_PRODUTO|QT_DISPONIVEL|COD_FILIAL|
|  0856322  |   CALCARIO |       5     |    41    |
|  0856322  |   CALCARIO |       9     |    114   |
|  0856322  |   CALCARIO |       8     |    128   |

I'm running the following SQL:

SELECT
E.COD_PRODUTO,
P.DESC_PRODUTO,
E.QT_DISPONIVEL,
E.COD_FILIAL
FROM
TB_ESTOQUE E
LEFT JOIN TB_PRODUTO P
ON P.COD_PRODUTO = E.COD_PRODUTO
WHERE
E.COD_PRODUTO = 856322
ORDER BY
P.DESC_PRODUTO

How do I relate the TB_FILIAL table to SQL by filtering by the COD_LOCALADM code?

Example:

... WHERE
    E.COD_PRODUTO = 856322 AND
    TB_FILIAL.COD_LOCALADM = 114
    
asked by anonymous 09.10.2018 / 16:41

3 answers

4

There is no COD_PRODUCT in the table TB_ESTOQUE according to your example.

Try it out:

SELECT
E.PRODUTO,
P.DESC_PRODUTO,
E.QT_DISPONIVEL,
E.COD_FILIAL
FROM
TB_ESTOQUE E, TB_FILIAL F
LEFT JOIN TB_PRODUTO P
ON P.COD_PRODUTO = E.PRODUTO
WHERE
F.COD_FILIAL = E.COD_FILIAL AND
F.COD_LOCALADM = 114 AND
E.PRODUTO = 856322
ORDER BY
P.DESC_PRODUTO
    
09.10.2018 / 18:34
1

Just add the branch table in the FROM clause and add the parameters for filtering in WHERE , without much complication:

SELECT
E.COD_PRODUTO,
P.DESC_PRODUTO,
E.QT_DISPONIVEL,
E.COD_FILIAL
FROM
TB_FILIAL F, 
TB_ESTOQUE E
LEFT JOIN TB_PRODUTO P
ON P.COD_PRODUTO = E.COD_PRODUTO
WHERE
E.COD_PRODUTO = 856322 
AND E.COD_FILIAL = F.COD_FILIAL 
AND F.COD_LOCALADM = 114
ORDER BY
P.DESC_PRODUTO
    
11.10.2018 / 19:29
0

You can use the code below because I do not think there will be a scenario where you save only a branch in the non-stock, or a product without a branch.

For WHERE to work, just put the joins, and then go calling Table. Field as needed.

SELECT
  P.COD_PRODUTO,
  P.DESC_PRODUTO,
  E.QT_DISPONIVEL,
  F.COD_FILIAL
FROM TB_ESTOQUE E
INNER JOIN TB_FILIAL F
  ON F.COD_FILIAL = E.COD_FILIAL
INNER JOIN TB_PRODUTO P
  ON P.COD_PRODUTO = E.COD_PRODUTO
WHERE P.COD_PRODUTO = 856322
  AND F.COD_FILIAL = 114
ORDER BY
  P.DESC_PRODUTO
    
13.10.2018 / 14:08