Como aproveitar uma coluna renomeada no MYSQL
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 ...
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
Curtidas 0
Respostas
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
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