LIKE COM INNER JOIN SQL

SQL

Oracle

Banco de Dados

11/12/2017

Eu tenho umas tabelas com as seguintes colunas

TB_PRODUTO, [ ID ], [ NAME ]
TB_CATEGORIA, [ ID ], [ NAME ], [ AMOUNT ], [ PRICE ], [ ID_CATEGORIES ]

O exercício pede "Exiba o código e o nome dos produtos, cuja categoria inicie com 'sal'"

Abaixo esta o código que eu tente, mais ele esta pegando o "nome" da tabela products e não do no like

SELECT C.ID, P.NAME 
FROM CATEGORIES C 
INNER JOIN PRODUCTS P ON C.ID = P.ID
WHERE C.NAME LIKE  '%sis%';
Salomão Souza

Salomão Souza

Curtidas 0

Melhor post

Johnny

Johnny

12/12/2017

Bom dia,
você elaborou a estrutura de tabelas incorretamente, deveria ser algo como:

TB_CATEGORIA, [ ID ], [ NAME ],
TB_PRODUTO, [ ID ], [ NAME ], [ AMOUNT ], [ PRICE ], [ ID_CATEGORIES ]


SELECT 
    PRODUCTS.ID, 
    PRODUCTS.NAME
FROM
    PRODUCTS
INNER JOIN 
    CATEGORIES  ON PRODUCTS.ID_CATEGORIES = CATEGORIES .ID
WHERE 
    CATEGORIES .NAME LIKE  'sal%';
GOSTEI 1

Mais Respostas

Nelson Erick

Nelson Erick

11/12/2017

Oi amigo, não entendi muito bem essas tabelas, ambas precisam estar relacionadas de alguma maneira, ou melhor, ter uma chave estrangeira. A chave estrangeira é CATEGORIES.ID mesmo? Nesse caso a CATEGORIES.ID_CATEGORIES é a chave primária, certo?
GOSTEI 0
Luiz Vichiatto

Luiz Vichiatto

11/12/2017

Como o nosso colega colocou, você está relacionando coisas diferentes, quando ocorrer que o ID de categoria for igual ao ID de produto você terá a relação dos conjuntos, lembra-se das aulas de conjuntos (união, intersecção e etc.), então é por este caminho.
É muito importante que tenha isto bem claro, são "conjuntos" é assim que irá tratá-los.

Oi amigo, não entendi muito bem essas tabelas, ambas precisam estar relacionadas de alguma maneira, ou melhor, ter uma chave estrangeira. A chave estrangeira é CATEGORIES.ID mesmo? Nesse caso a CATEGORIES.ID_CATEGORIES é a chave primária, certo?
GOSTEI 0
Johnny

Johnny

11/12/2017

Bom dia,
você elaborou a estrutura de tabelas incorretamente, deveria ser algo como:

TB_CATEGORIA, [ ID ], [ NAME ],
TB_PRODUTO, [ ID ], [ NAME ], [ AMOUNT ], [ PRICE ], [ ID_CATEGORIES ]


SELECT 
    PRODUCTS.ID, 
    PRODUCTS.NAME
FROM
    PRODUCTS
INNER JOIN 
    CATEGORIES  ON PRODUCTS.ID_CATEGORIES = CATEGORIES .ID
WHERE 
    CATEGORIES .NAME LIKE  'sal%';



Lembrando que o LIKE funciona da seguinte forma, se você quiser buscar pelo inicio do nome utilize apenas um símbolo de percentual, veja abaixo:

NOME LIKE 'sal%'

Agora caso você deseje pesquisar em qualquer parte do nome, utilize o seguinte:

NOME LIKE '%sal%'
GOSTEI 0
POSTAR