Código: SELECT TabPedido.IdUtilizador, TabPedido.IdProduto, TabPedido.DataHora, TabPedido.Quantidade, TabPedido.Estado, TabProduto.Nome, TabProduto.Stock, TabPedido.Codigo, TabUtilizador.Nome AS Expr1 FROM TabPedido INNER JOIN TabProduto ON TabPedido.IdProduto = TabProduto.Id INNER JOIN TabUtilizador ON TabPedido.IdUtilizador = TabUtilizador.Id WHERE (TabPedido.Estado = 2) este select esta a seleccionar tdos os pedidos com estado = 2 mostrando o utilizador que o aceitou. mas: eu quero mostrar tb o utilizador que o fez, tenho te ir ver do pedido com o mesmo codigo deste anterior , mas com estado = 0, e queria fazer isso tdo no mesmo query ex: pedido:ex de 2 registos Código: codigo estado utilizador 1 0 alf 1 2 alf2 o pedido com estado = 0 foi pedido pelo utilziador alf e aceite pelo utilizador alf 2 e guardado com estado 2. eu no select quero mostrar os dois utilizadorea so sei que para isso tenho o mesmo codigo nos dois pedidos de estados diferentes . gostava de saber como obrigado
melhor explicando o problema Código: SELECT TabPedido.IdUtilizador, TabPedido.IdProduto, TabPedido.DataHora, TabPedido.Quantidade, TabPedido.Estado, TabProduto.Nome, TabProduto.Stock, TabPedido.Codigo, TabUtilizador.Nome AS Expr1 FROM TabPedido INNER JOIN TabProduto ON TabPedido.IdProduto = TabProduto.Id INNER JOIN TabUtilizador ON TabPedido.IdUtilizador = TabUtilizador.Id WHERE (TabPedido.Estado = 2) ________ explicando o caso tenho uma tabela pedidos com os campos e seguintes registos Código: idproduto idutlizador datahora quantidade codigo estado 1 2 x x 1 0 1 3 x x 1 2 como pode ver nos registos que dei no exemplo temos 2 registos com o mesmo codigo pois são referentes ao mesmo produto , mas com utilizadores diferentes isto porque: o registo de estado =0 é referente ao utilizador que fez o pedido e o registo de estado = 2 é referente ao utilizador que o aceitou o select a cima so mostra o utilizador que o aceitou, e eu quero que mostre tambem o utilizador que o fez este select(enviado) mostra a query Código: datahora quantidade produto stock utilizador (pedido aceite) (que aceitou) o tipo o query que eu quero que apareça é Código: datahora | datahora | produto | codigo|quantidade | utilizador | utilizador (pedidofeito) | (pedidoaceite) | | | que aceitou | quepedio (estado2) |(estado=0) em relação a query anterior quero que contenha também o campo quantidade gostava de uma ajuda para o caso obrigado aguardo atenciosamente
n sei se percebi bem a tua questao. o k keres sao o utilizador k tem o estado = 0 e o utilizador com estado=2 em k o idproduto=1 nos dois? se for isso basta alterar o fim de where (tabpedido.estado = 2) para where (tabpedido.estado in (0,2))
de qq das maneira obrigado esta aqui a solução so para pedidos de estado = 0 e de estado = 2 Código: select distinct /* select o nome de quem aceitou o pedido*/ c.Nome as Aprovador, /*select o nome de quem fez o pedido*/ d.Nome as Requisitante, /*select codigo do pedido*/ a.Codigo, /*select o nome do produto*/ e.Nome as Produto, /*select a datahora do pedido requisitado*/ f.Datahora as 'Data Req', /*select a datahora do pedido entregue*/ a.Datahora as 'Data ent', /*select a quantidade pedida no pedido requisitado*/ g.quantidade as 'quant req', /*select a quantidade pedida no pedido aceite*/ a.quantidade as 'quant aceit', /*quantidade pendente*/ from TabPedido a /* capta o codigo do pedido referente a estado em b e select a*/ Left Join TabPedido b on a.codigo=b.codigo Left Join TabPedido pend on a.codigo=pend.codigo /* capta o o nome do utilizador que aceitou o pedido com estado em a e select c*/ Left Join TabUtilizador c on a.IdUtilizador=c.Id /* capta o nome do utilizador que requisitou o pedido */ Left Join TabUtilizador d on b.IdUtilizador=d.Id /* capta o o produto */ Left Join TabProduto e on b.IdProduto=e.Id /* capta a datahora do pedido estado 0 */ Left Join Tabpedido f on b.datahora=f.datahora /* capta a quantidade do pedido estado 0 */ left join Tabpedido g on b.quantidade=g.quantidade /*a para estado = 2 b para estado = 0*/ where a.estado=2 and b.estado=0 assim funciona mostrando tdo em relação a pedidos requisitados e entregues mas se que quizer fazer tb para pendentes e fazendo assim [CODE] select distinct /* select o nome de quem aceitou o pedido*/ c.Nome as Aprovador, /*select o nome de quem fez o pedido*/ d.Nome as Requisitante, /*select codigo do pedido*/ a.Codigo, /*select o nome do produto*/ e.Nome as Produto, /*select a datahora do pedido requisitado*/ f.Datahora as 'Data Req', /*select a datahora do pedido entregue*/ a.Datahora as 'Data ent', /*select a quantidade pedida no pedido requisitado*/ g.quantidade as 'quant req', /*select a quantidade pedida no pedido aceite*/ a.quantidade as 'quant aceit', /*quantidade pendente*/ h.quantidade as 'quant pendente' from TabPedido a /* capta o codigo do pedido referente a estado em b e select a*/ Left Join TabPedido b on a.codigo=b.codigo Left Join TabPedido pend on a.codigo=pend.codigo /* capta o o nome do utilizador que aceitou o pedido com estado em a e select c*/ Left Join TabUtilizador c on a.IdUtilizador=c.Id /* capta o nome do utilizador que requisitou o pedido */ Left Join TabUtilizador d on b.IdUtilizador=d.Id /* capta o o produto */ Left Join TabProduto e on b.IdProduto=e.Id /* capta a datahora do pedido estado 0 */ Left Join Tabpedido f on b.datahora=f.datahora /* capta a quantidade do pedido estado 0 */ left join Tabpedido g on b.quantidade=g.quantidade left join Tabpedido h on pend.quantidade=h.quantidade /*a para estado = 2 b para estado = 0*/ where a.estado=2 and b.estado=0 and pend.estado=1 ele mes mostra os pendentes mas so os que são >0 se pendente for =0 não mostra e eu quero que mostre gostava de resolver apenas este problemita obrigada
Como no problema anterior, tens de fazer o left join dos pendentes à tabela "a" e "b" e ficares com, por exemplo apend. e bpend.