Query between two sqlite tables

1

My question is how to query between two tables.

It would be a Pedidos table with the Idprod , idCliente field.

The other would be the Produtos table with the Idprod , Descricao fields.

I wanted to do a search of Produtos bought by the particular client.

I'm using visual studio 2015 xamarin forms, database sqlite .

I have tried this but it did not work:

Select Idprod,Descricao From Produtos INNER JOIN pedidos on Produtos.Idprod = pedidos.Idprod 
    
asked by anonymous 17.03.2017 / 17:20

2 answers

0

I do not know how your business rule is defined, but analyzing it superficially I think it is incorrect.

The relationship of pedido is 1...N , you should have a pedido_produto entity where the relationship between requests and products is made.

order_table

+----+------------+
| id | cliente_id |
+----+------------+
|  1 |          2 |
|  2 |          3 |
|  3 |          1 |
+----+------------+

product_table

+----+------------+
| id | descricao  |
+----+------------+
|  1 | SMART TV   |
|  2 | NOTEBOOK   |
|  3 | SMARTPHONE |
+----+------------+

product_table_table

+-----------+------------+
| pedido_id | produto_id |
+-----------+------------+
|         1 |          2 |
|         1 |          3 |
|         2 |          1 |
|         2 |          3 |
|         3 |          1 |
+-----------+------------+

With the following DDL :

CREATE TABLE tabela_cliente (
    id INT AUTO_INCREMENT PRIMARY key,
    nome VARCHAR(100)
);

CREATE TABLE tabela_pedido (
    id INT AUTO_INCREMENT PRIMARY key,
    cliente_id INT
);

CREATE TABLE tabela_produto (
    id INT AUTO_INCREMENT PRIMARY key,
    descricao VARCHAR(100)
);

CREATE TABLE tabela_pedido_produto (
    pedido_id INT,
    produto_id INT,
);

INSERT INTO tabela_cliente (nome) VALUES
('João'),
('José'),
('Maria'),
('Madalena');

INSERT INTO tabela_pedido (cliente_id) VALUES
(1),
(2),
(3),
(4);

INSERT INTO tabela_produto (descricao) VALUES
('SMARTPHONE'),
('SMARTV'),
('NOTEBOOK');


INSERT INTO tabela_pedido_produto (pedido_id, produto_id) VALUES
(1, 1),
(1, 2),
(2, 2),
(2, 3),
(3, 1),
(4, 2);

You would select orders relating to customers and products:

SELECT * 
FROM tabela_pedido p
LEFT JOIN tabela_cliente c ON c.id = p.cliente_id
LEFT JOIN tabela_pedido_produto pp ON pp.pedido_id = p.id
LEFT JOIN tabela_produto pr ON pr.id = pp.produto_id

If for example, you want to get orders and products from the John client, just add the WHERE :

WHERE p.cliente_id = 1
    
17.03.2017 / 19:36
0

Hello @Eloi,

Try this:

Select Produtos.Idprod
     , Produtos.Descricao 
  From Produtos INNER JOIN Pedidos on Produtos.Idprod = Pedidos.Idprod
 Where Pedidos.IdCliente = 'id do cliente'

The way you wrote will give ambiguity, both the Produtos table and the Pedidos table have the Idprod column, so you need to make explicit in the select which table belongs to the column, Produtos.Idprod or Pedidos.Idprod .

[] s

Eloi I need these details on the red square to understand what happens, the more information you give about the error better:

    
17.03.2017 / 19:03