Como aproveitar uma coluna renomeada no MYSQL

MySQL

SELECT

19/05/2022

Boa tarde !!!

Eu tenho a seguinte query abaixo

Eu apelidei o número randômico com o AS number porque preciso usar esse número numa conta de menos (remainder_quantity - number)

Se eu mandasse ali usar o valor novamente sem esse apelido -> (FLOOR(RAND() * divide_quantity)), corre o perigo de gerar outro número e na verdade a conta depende do primeiro número que foi gerado, por isso eu fiz o Alias ali no início ...

select (FLOOR(RAND() * divide_quantity)) AS number, divide_quantity, (remainder_quantity - number) AS reimander_descount, remainder_quantity, sale_quantity
from newsstand_divides
where active = ''yes'' limit 100

Desde já mais que agradecido quem puder me ajudar nessa questão ...
Dárcio Júnior

Dárcio Júnior

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

19/05/2022

tente assim:
select
   number, divide_quantity, (remainder_quantity - number) AS reimander_descount, remainder_quantity, sale_quantity
from
	(
		select (FLOOR(RAND() * divide_quantity)) AS number, divide_quantity, remainder_quantity, sale_quantity
		from newsstand_divides
		where active = 'yes' limit 100
	) tmp

GOSTEI 0
Dárcio Júnior

Dárcio Júnior

19/05/2022

tente assim:
select
   number, divide_quantity, (remainder_quantity - number) AS reimander_descount, remainder_quantity, sale_quantity
from
	(
		select (FLOOR(RAND() * divide_quantity)) AS number, divide_quantity, remainder_quantity, sale_quantity
		from newsstand_divides
		where active = 'yes' limit 100
	) tmp



Boa tarde campeão, tudo bem ???

Desde já agradecido por responder ...

Vou tentar fazer o que me disse e preciso disso exatamente para o UPDATE abaixo onde quebra, mais passei o problema em forma de SELECT para ficar de mais fácil compreensão:

Vai observar na query principal essas 2 linhas que eu deixei em destaque abaixo:

nd.remainder_quantity = (FLOOR(RAND() * nd.divide_quantity)) AS number,
nd.sale_quantity = nd.divide_quantity - number,

O valor que o campo "nd.remainder_quantity" vai receber do número flutuante tem de ser atribuído numa conta de subtração

Vou dar um exemplo mais fácil com números:

Recebido = 30 -> divide_quantity
Encalhe = 7 -> remainder_quantity Que é onde eu gero um número randômico que não ultrapasse a quantidade recebida
Vendido = 23 -> sale_quantity É a subtração do que recebeu - o encalhe



UPDATE bundle_sheets bs
INNER JOIN bundle_sheet_items bsi ON bsi.bundle_sheet_id = bs.bundle_sheet_id AND bsi.bundle_sheet_item_situation = 'remainder' AND bsi.active = 'yes'
INNER JOIN newsstand_divides nd ON nd.newsstand_divide_id = bsi.newsstand_divide_id AND nd.active = 'yes'
INNER JOIN newsstands n ON n.newsstand_id = nd.newsstand_id AND n.active = 'yes'
SET bs.remainder_input_status = 'total',
bs.modification_date = NOW(),
nd.remainder_quantity = (FLOOR(RAND() * nd.divide_quantity)) AS number,
nd.sale_quantity = nd.divide_quantity - number,
nd.remainder_state = 'determined',
nd.remainder_input_date = NOW(),
nd.modification_date = NOW()
WHERE bs.remainder_input_status = 'pending'
AND bs.bundle_id = 6898
AND bs.bundle_sheet_id = 70282510
AND nd.remainder_state = 'pending'
GOSTEI 0
POSTAR