Ajuda com consulta.
Gostaria de uma ajuda de como eu faço uma consulta com essas duas tabelas:
Minha dúvida é: no meu programa eu tenho um DBGrid em q apareça o a lista dos produtos pedidos em uma determinada data.
CREATE TABLE pedido ( ID int NOT NULL auto_increment, CONTROLE int(11) default NULL, DATA_PEDIDO varchar(10) default NULL, DATA_PAGAMENTO varchar(10) default NULL, TOTAL decimal(8,3) default NULL, PRIMARY KEY (ID) );
CREATE TABLE pedido_e ( ID int(11) NOT NULL auto_increment, PRODUTO varchar(40) default NULL, PRECO decimal(8,3) default NULL, QUANTIDADE int(11) NOT NULL default 0, RENTABILIDADE decimal(8,3) default NULL, DATA_PEDIDO varchar(10) default NULL, PRIMARY KEY (ID) );
Minha dúvida é: no meu programa eu tenho um DBGrid em q apareça o a lista dos produtos pedidos em uma determinada data.
Mausimag
Curtidas 0
Respostas
Codename.v
26/10/2008
O correto seria que você tivesse uma estrutura de dados parecida com a seguinte:
Onde temos uma tabela de detalhes do pedido (N para N) que recebe duas chaves estrangeiras, uma da tabela pedido e uma da tabela produto.
A consulta ficaria assim:
Onde ´2008-10-10´ seria substituido pela data a ser consultada.
O resultado da consulta acima seriam todos os produtos que foram pedidos no dia 10-10-2008 sem que sejam repetidos caso pedidos mais de uma vez no mesmo dia (DISTINCT).
Abraços!
CREATE TABLE pedidos( ped_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, ped_controle INT(11) DEFAULT NULL, ped_datapedido DATE DEFAULT NULL, ped_datapagamento DATE DEFAULT NULL, ped_total DECIMAL(8, 3) DEFAULT NULL ); CREATE TABLE produtos( pro_id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, pro_nome VARCHAR(50) NOT NULL, pro_preco DECIMAL(8, 3) DEFAULT 0, pro_quantidade INTEGER DEFAULT 0 ); CREATE TABLE itens_pedidos( ped_id INTEGER NOT NULL, pro_id INTEGER NOT NULL, ipe_quantidade INTEGER DEFAULT 1 NOT NULL, ipe_subtotal DECIMAL(8, 3) NOT NULL, FOREIGN KEY(ped_id) REFERENCES pedidos(ped_id), FOREIGN KEY(pro_id) REFERENCES produtos(pro_id) );
Onde temos uma tabela de detalhes do pedido (N para N) que recebe duas chaves estrangeiras, uma da tabela pedido e uma da tabela produto.
A consulta ficaria assim:
SELECT DISTINCT pro.* FROM produtos pro INNER JOIN itens_pedidos ipe ON ipe.pro_id = pro.pro_id INNER JOIN pedidos ped ON ped.ped_id = ipe.ped_id WHERE ped.ped_datapedido = ´2008-10-10´
Onde ´2008-10-10´ seria substituido pela data a ser consultada.
O resultado da consulta acima seriam todos os produtos que foram pedidos no dia 10-10-2008 sem que sejam repetidos caso pedidos mais de uma vez no mesmo dia (DISTINCT).
Abraços!
GOSTEI 0