Waarde weergeven, welke nog niet eerder getoond is

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • JohanLi
  • Registratie: April 2022
  • Laatst online: 10-02-2023
Hallo,

Ik heb in een query items en aantallen. Wanneer het item en het aantal aan een bepaalde voorwaarde voldoet, wil ik een locatie toewijzen. Dit doe ik middels onderstaande formule:

case when ITEM = X and QUANTITY <= 5 then (select min(LOCATIE) from DATABASE where VOLUME = 0)

Dit gaat goed bij de eerste rij. Daar wordt de gewenste voorraadlocatie getoond. Echter bij het volgende item waar bovenstaande criteria van toepassing zijn, wordt dan de juiste voorraadlocatie getoond. En eigenlijk wil ik daar de volgende vrij beschikbare locatie tonen.

Ik ben bekend met LEAD, maar ben daar mee bezig geweest, maar krijg het niet voor elkaar.

Iemand de gouden tip?

Alle reacties


Acties:
  • 0 Henk 'm!

  • Oon
  • Registratie: Juni 2019
  • Niet online

Oon

Er mist wel echt heel veel informatie. In de basis; wat voor database is dit? Lijkt op SQL, maar in dat geval welk dialect?

Kun je je volledige query delen?

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Je probleem is simpel.

1. SELECT locatie FROM table WHERE volume = 0

Dan heb je een lijst van alle lege locaties.

2. SELECT * FROM table WHERE item = X and quantity <= 5

Dan heb je een lijst van alles dat een plekje moet krijgen.

3. merge de twee resultaten

Anders gooi je inderdaad elk item in die ene lege locatie ;)


P.S. geen zin in? Dan kan je ook Russische roulette spelen

code:
1
case when ITEM = X and QUANTITY <= 5 then (select LOCATIE from DATABASE where VOLUME = 0 ORDER BY RAND() LIMIT 1)

[ Voor 34% gewijzigd door DJMaze op 20-10-2022 13:05 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • JohanLi
  • Registratie: April 2022
  • Laatst online: 10-02-2023
Oon schreef op donderdag 20 oktober 2022 @ 12:59:
Er mist wel echt heel veel informatie. In de basis; wat voor database is dit? Lijkt op SQL, maar in dat geval welk dialect?

Kun je je volledige query delen?
Inderdaad SQL welk dialect weet ik niet, ik kan nergens een versie of iets vinden. Het is een query-manager in IBS Enterprise, een ERP systeem.


select Item, Aantal, (select Locatie from database2 where Volume = 0 )

from database1
order by Item

Acties:
  • 0 Henk 'm!

  • JohanLi
  • Registratie: April 2022
  • Laatst online: 10-02-2023
DJMaze schreef op donderdag 20 oktober 2022 @ 12:59:
Je probleem is simpel.

3. merge de twee resultaten

Anders gooi je inderdaad elk item in die ene lege locatie ;)


P.S. geen zin in? Dan kan je ook Russische roulette spelen

code:
1
case when ITEM = X and QUANTITY <= 5 then (select LOCATIE from DATABASE where VOLUME = 0 ORDER BY RAND() LIMIT 1)
Ik was niet bekend met RAND(), wel handig, dank daarvoor. Maar zoals je zegt, dat is Russisch Roulette, ik wil juist de eerstvolgende locatie, omdat die in de buurt is van de vorige locatie. Met RAND() ga ik van hot naar her.

Ik stoei nog even met het merge van de twee resultaten, heb ik geen ervaring mee, maar ik ga eens aan de slag.

Acties:
  • +1 Henk 'm!

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 12:26
JohanLi schreef op donderdag 20 oktober 2022 @ 13:19:
[...]
Ik stoei nog even met het merge van de twee resultaten, heb ik geen ervaring mee, maar ik ga eens aan de slag.
Wanneer je in beide queries het rijnummer kan toevoegen, dan kan je hier vervolgens op joinen.
Pagina: 1