Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jordan Pinheiro_147113

consulta no banco sql inner join

Recommended Posts

Beleza, realizei uns testes aqui e acho que chegamos ao que você queria.

 

Não podemos fazer com JOIN porque a query retornaria x vezes o valor presente no carrinho, pra cada vez que ele tivesse que fazer a junção entre carrinho e segura_variacao. Testa com esse exemplo:

 

-- Eu separei em duas colunas apenas pra você ver o que ele tá trazendo de cada lugar
SELECT SUM( c.car_valor * c.car_quantidade ), SUM(s.sev_valor) 
FROM carrinho AS c
JOIN segura_variacao as s ON s.sev_carrinho = c.car_id
WHERE car_id = 40 GROUP BY c.car_id

Note que a primeira coluna ele traria 50 reais, 5 x o valor 10 no carrinho 40, porque nós temos 5 variações para este carrinho.

 

Acho que o que você procura é esta query:

 

-- Novamente eu separei em duas colunas pra você ver separadamente
SELECT SUM(c.car_valor * c.car_quantidade) AS TOTAL_CARRINHO, (SELECT SUM(s.sev_valor) FROM segura_variacao AS s WHERE s.sev_carrinho = c.car_id) AS TOTAL_VARIACOES FROM carrinho AS c
WHERE car_id = 40

-- Para trazer tudo junto basta executar assim
SELECT SUM(c.car_valor * c.car_quantidade) + (SELECT SUM(s.sev_valor) FROM segura_variacao AS s WHERE s.sev_carrinho = c.car_id) AS TOTAL FROM carrinho AS c
WHERE car_id = 40

Aguardo retorno pra saber se atingimos o objetivo =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa opa acabei de achar uma coisinha tipo ele só retorna um valor total se tiver registro na tabela segura_variacao tipo se eu colocar uma coca-cola no carrinho ele da total R$ 0,00 ai eu boto um carrinho e mais uma pizza com variações ai ele pega o valor 100% certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok espera aí um pouco então que eu sei a solução, só vo entrar de novo pra ver.

 

Ok testa estas querys:

 

-- Um exemplo que tem só uma coca-cola
SELECT SUM(c.car_valor * c.car_quantidade) + IFNULL((SELECT SUM(s.sev_valor) FROM segura_variacao AS s WHERE s.sev_carrinho = c.car_id),0) AS TOTAL FROM carrinho AS c
WHERE car_sessao =  'eg1h09lr7im8m9anbmfpjjms03'

-- Um exemplo que tem pizza e coca
SELECT SUM(c.car_valor * c.car_quantidade) + IFNULL((SELECT SUM(s.sev_valor) FROM segura_variacao AS s WHERE s.sev_carrinho = c.car_id),0) AS TOTAL FROM carrinho AS c
WHERE car_sessao =  'f089cf2ab827cc1398c25b171c3a7453'

Ele tava dando zero porque as vezes retornava NULL daquele segund SUM (porque a coca não tem variação, logo NULL), e não podemos somar valor com NULL. Desta maneira agora com o IFNULL dizemos que caso seja NULO vamos pegar o ZERO pra somar, e podemos somar valor com zero sem alterar a conta =]

 

Faz uns testes, espero que resolva.

 

Ah e sim, eu alterei pra usar o car_sessao agora. Acho que vai dar na mesma, vê qual fica melhor pra você, se o ID ou a sessão, precisando de ajuda posta aí =]

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara pior que eu não conheço nada também. Já pedi aqui no fórum mas meu tópico tá lá parado :P

 

Aliás se achar algo algo compartilha comigo no meu e-mail hehe

 

Precisando de ajuda manda aí, ou dá um toque por lá também. Valeu cara abraço, boa sorte aí com os sistema =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

e cabra encontrei falhas no sql... 1 falha se eu por a quantidade da pizza 2 (pizza = a geristro em variações) ele n multiplica e se eu tiver mais de uma pizza tambem com outras variações da no mesmo...

 

vou por abaixo como eu to usando

$sqlValorFinal = $obj->listar("SELECT SUM(c.car_valor * c.car_quantidade) + IFNULL((SELECT SUM(s.sev_valor) FROM segura_variacao AS s WHERE s.sev_carrinho = c.car_id),0) AS TOTAL FROM carrinho AS c
WHERE c.car_sessao = '$sessao'") or die (mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Cara atualmente to em viagem e sem muito tempo pra ver detalhadamente o problema.

 

Por que tu não tenta implementar da maneira que eu sugeri? Eu acho que resolveria o problema.

 

Quando der eu tento passar por aqui, se precisar me contata por e-mail.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.