Bring select in a row with 2 references

Asked

Viewed 43 times

0

Good afternoon, I wonder if there are possibilities to bring everything in a row with the following tables:

Pedidos
id
id_produto1
id_produto2
id_produto3


Produtos

id
produto

I would like to make a select that brings the order table with the name of the products on the side of each id_product in a row. It will be possible?

Example

id   |    id_produto1   |  produto  |  id_produto2 | produto | id_produto3 | produto

1    |         2        |    arroz   |       3     |  feijão |       4     | Macarrão

2 answers

1


If there is a relationship between the Order table and the Products table, just use the foreign key of this relationship, example:

SELECT PEDIDOS.ID, PEDIDOS.ID_PRODUTO1
(SELECT PRODUTOS.PRODUTO FROM PRODUTOS WHERE PRODUTOS.ID = PEDIDOS.ID_PRODUTO1) AS PRODUTO,
PEDIDOS.ID_PRODUTO2
(SELECT PRODUTOS.PRODUTO FROM PRODUTOS WHERE PRODUTOS.ID = PEDIDOS.ID_PRODUTO2) AS PRODUTO_2,
PEDIDOS.ID_PRODUTO3
(SELECT PRODUTOS.PRODUTO FROM PRODUTOS WHERE PRODUTOS.ID = PEDIDOS.ID_PRODUTO3) AS PRODUTO_3,
FROM PEDIDOS

In case, Requested Id_would be the foreign key.

  • there is no id_request column, but id_pedido1, id_pedido2 and id_pedido3.

  • SELECT ORDERS.ID, ORDERS.ID_PRODUTO1 (SELECT PRODUCTS.PRODUCT FROM PRODUCTS WHERE PRODUCTS.ID = ORDERS.ID_PRODUTO1) AS PRODUCTS, ORDERS.ID_PRODUTO2 (SELECT PRODUCTS.PRODUCT FROM PRODUCTS WHERE PRODUCTS.ID = ORDERS.ID_PRODUTO2) AS PROD_2, ORDERS.ID_PRODOD3 (SELECT PRODUCTS.PRODUCT FROM PRODUCTS WHERE PRODUCTS.ID = ORDERS.ID_PRODUTO3) AS PRODUTO_3, FROM ORDERS

0

You can make a INNER JOIN of the two tables taking the id_product of the ordered table and id of the products table to solve your problem:

Example:

SELECT PE.ID_PRODUTO
      ,PR.NOME
  FROM PEDIDOS AS PE
 INNER JOIN PRODUTOS AS PR ON PE.ID_PRODUTO = PR.ID
  • there is no id_request column, but id_pedido1, id_pedido2 and id_pedido3.

  • 1

    @Romariopires then edit your code by placing the correct columns.

  • But it’s correct.

Browser other questions tagged

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