Jump to content

Problema SQL


fil79
 Share

Recommended Posts

Boas

Tenho a uma tabela com os seguintes campos-> nome, premio, produto.

Basicamente queria numa só query que devolvesse a seguinte listagem:

nome, somatório dos premios do produto 1, somatorio dos premios do produto2

de notar que o só existe um capo para o premio, é por isso que estou com mais dificuldades para criar a query.

é possivel? Desde já agradeço

MCITP-MCTS-MCP

Link to comment
Share on other sites

não...vejamos tenho a tabela clientes com os campos nome, premio, produto.

O produto pode ser de dois tipos (1,2-> relacionado com a tabela produtos).

O que quero é num select ter este output

Nome Cliente || Somatório 1 (quando o produto é 1) || Somatório 2 (quando o produto é 2) ||

MCITP-MCTS-MCP

Link to comment
Share on other sites

Experimenta:

SELECT TC.Nome,SUM(TC.Soma1) as [somatório 1],SUM(TC.Soma2) AS [somatório 2] FROM (SELECT Nome, -Premio*(Produto=1) AS Soma1, -Premio*(Produto=2) AS Soma2 FROM Tabela1) AS TC GROUP BY TC.Nome

Nota: O Valor lógico é -1 para TRUE e 0 para FALSE, por isso a expressão -Premio*(Produto=1).

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

não estou a conseguir, pois ainda existem mais umas condicionantes, basicamente é isto:

Tabela USERS (id,nome,senha)

Tabela Clientes(cliente_id,nome,data_admissao,user(utilizador que criou), etc etc)..

O output que pretendo é:

user || premio1|| premio2

joão 120 120

manuel 100 0

Acontece que a query faz um filtro por datas:

SELECT  users.nome,users.user_id,SUM(cliente.premio) as  premio1,SUM(cliente.premio1) as  premio2,SUM(cliente.premio1+cliente.premio) as total           
FROM users
LEFT JOIN cliente           
ON(cliente.user=users.user_id)
          WHERE cliente.data_admi BETWEEN '2010-06-01' AND '2010-06-30'           
GROUP BY users.user_id
Order by total DESC  

Isto assim devolve-me a listagem dos users que inseriram clientes na respectiva data, mas o poblema é que os que não inseriram não aparecem e queria que isso não acontecesse...Como posso resolver isto. Agradeço

MCITP-MCTS-MCP

Link to comment
Share on other sites

A hipotese que eu lhe dei é para a questão posta na primeira mensagem, você não pode esperarque lhe resolva um problema diferente.

Para cada situação uma declaração diferente.

Se você descrever a estrutura das tabelas involvidas incluindo as relações, pode receber uma ajuda objectiva, caso contrário a adaptação da solução apresentada é da sua responsabilidade.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.