Ajuda com consulta.

MySQL

26/10/2008

Gostaria de uma ajuda de como eu faço uma consulta com essas duas tabelas:

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

Mausimag

Curtidas 0

Respostas

Codename.v

Codename.v

26/10/2008

O correto seria que você tivesse uma estrutura de dados parecida com a seguinte:

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
POSTAR