Results 1 to 8 of 8

Thread: Veldwaarde binnen een groep ophogen met MYSQL.

  1. #1
    Registered User
    Join Date
    Aug 2008
    Location
    Enschede
    Posts
    8

    Question Veldwaarde binnen een groep ophogen met MYSQL.

    Voor een (plan)schema probeer ik projecten per week en dan per dag inzichtelijk te maken. Zelf weet ik wel iets van queries maar niet voldoende om deze op te bouwen. Het gaat om het tabel Dagen waarin onder andere het Dag_id (AutoInc), Project_id en de Datum van werkzaamheden zit . Er is geen index op deze specifieke velden toegepast. De overige velden omvatten onder andere het aantal personen dat die dag nodig is, of de opdracht vervallen is (zo als nu met de vorst) en zo nog wat kleinigheden. Tussen {} staat per regel het antwoord dat ik wil hebben:

    Dag_id Project_id Datum {Week} {Dag} {Kolom}
    180.001 180001 15-01-2018 {3} {1} {1}
    180.002 180001 16-01-2018 {3} {2} {1}
    180.003 180001 17-01-2018 {3} {3} {1}
    180.004 180001 18-01-2018 {3} {4} {1}
    180.005 180002 16-01-2018 {3} {2} {2}
    180.006 180005 16-01-2018 {3} {2} {3}
    180.007 180006 17-01-2018 {3} {3} {2}
    180.008 180007 18-01-2018 {3} {4} {2}
    Op 15-01 heb ik 1 opdracht. Op 16-1 > 3, 17-1 > 2 & 18-1 > 2 opdrachten. Voor het "Grid" wat ik aan het maken ben heb ik de volgende informatie nodig:
    - Dag_id,
    - Project_id,
    - week via WEEKOFYEAR(Datum),
    - dag via DAYOFWEEK(Datum),
    - Kolom via ??

    En daar strand ik. Binnen de groep week =3 en dag =2 moeten de kolomnummers 1, 2 & 3 gezet worden. Wanneer ik het "Grid" zou opbouwen aan de hand van deze query zou het volgende moeten komen:

    Maandag 180001
    Dinsdag 180001 180002 180005
    Woensdag 180001 180006
    Donderdag 180001 180007

    Ik heb een plaatje bijgevoegd zoals wij het nu in Excel doen.Click image for larger version. 

Name:	Afbeelding1.png 
Views:	152 
Size:	12.8 KB 
ID:	7715

    Ed.

  2. #2
    Volgens mij is dit met SQL alleen erg lastig of misschien zelfs onmogelijk om te doen. Ik denk dat je oplossing moet zoeken in een combinatie van SQL en Delphi.

    p.s. TMS heeft een planner component die je eventueel kunt gebruiken (voor inspiratie) ze hebben trial maar misschien is het bestuderen van de handleiding al voldoende. Het probleem dat je hebt is volgens mij vergelijkbaar van een agenda/planner functie.

  3. #3
    Dit gaat met SQL inderdaad niet exact lukken (zonder procedures of pivot functie). Het probleem is dat bij SQL de kolommen statisch zijn. Wat doe je bijvoorbeeld bij 20 opdrachten op 1 dag.
    Of 200?

    Wel kun je het omdraaien en de dagen in de kolommen zetten. Dan zou je bijvoorbeeld de komende 4 dagen in de kolommen zetten en de regels zijn dan de orders. (Jouw gewenste resultaat maar dan 90 graden gedraaid)
    Je zit dan wel gebonden aan het zelf opgeven van die dagen.

    Het hangt verder van je database af of je dit in pure SQL met procedures/pivot voor elkaar kunt krijgen.

    Maar wellicht is het inderdaad, zoals luigi aangeeft, handiger te doen in code.
    Last edited by rvk; 25-Feb-18 at 13:01.

  4. #4
    Registered User
    Join Date
    Aug 2008
    Location
    Enschede
    Posts
    8
    Dan moet ik nog even verder in procedures en pivot duiken. De reden van het niet gebruiken van TMS of het draaien van de regels met de kolommen zit hem in de visualisatie. De meeste planprogramma's gaan uit van resources (het personeel) op de regels, tijden op kolommen en projecten als veldwaardes. Maar:
    Op maandag heb ik bijvoorbeeld 1 project, maar het kunnen er ook 10 zijn of 40. Het aantal mensen per project scheelt ook. Voor het begeleiden van een voetbalwedstrijd (zie handtekening) het ik 23 mensen ingepland. Voor de lokale marathon 65 en voor een om en ommetje (tweebaansweg, 1 rijbaan afgesloten, al het verkeer om en om om de andere baan) maar 2 of bij een lange dienst 3. Niet iedereen staat altijd in dezelfde formatie bij elkaar. Om snel te zien of het aantal ingezette personen overeenkomt met de opdracht is het ondoenlijk om per project een filter in te zetten en dan het aantal resources te tellen. Dit wil ik in een oogopslag kunnen zien. Daarom schrijf ik het programma zelf.
    Verkeersregelaars: Van die vervelende personen die je stil zetten om je vervolgens de verkeerde kant op te sturen.

  5. #5
    De meeste planprogramma's gaan uit van resources (het personeel) op de regels, tijden op kolommen en projecten als veldwaardes.
    Volgens mij is dat bij TMS planner juist niet het geval. Als ik me niet vergis heb je een resource tabel en een plan item tabel waarbij de resources onder een dag staan, dit kunnen er meer dan één zijn. Bijvoorbeeld 5 tennisbanen of iets dergelijks. Heb je heel veel resource dan wordt het wel horizontaal scrollen
    Wat er op de achtergrond volgens mij gebeurd is dat er per resource gekeken wordt wat er op die dag ingepland staat. De tms planner is in principe volgens mij gewoon een grid, dus je zou het in principe ook zonder de planner van TMS kunnen doen.

    https://www.tmssoftware.com/site/dbplanner.asp

  6. #6
    Juist met die 40 projecten op 1 dag lijkt mij de dagen in de kolommen makkelijker en overzichtelijker. Anders moet je naar rechts scrollen om al die orders te zien. En meer dan 4-6 dagen hoef je dan toch niet zichtbaar te hebben.

    Maar goed. Je wilt dus een Dynamic Pivot Table met SQL:
    http://webdevzoom.com/dynamic-pivot-table-using-mysql/

  7. #7
    Registered User
    Join Date
    Aug 2008
    Location
    Enschede
    Posts
    8
    Bedankt voor jullie inbreng. Bovenstaande opties ga ik proberen. Mijn ervaringen zal ik proberen te onthouden en jullie mede te delen.

    Groeten,

    Ed.
    Verkeersregelaars: Van die vervelende personen die je stil zetten om je vervolgens de verkeerde kant op te sturen.

  8. #8
    Registered User
    Join Date
    Aug 2008
    Location
    Enschede
    Posts
    8
    Door het antwoord van Rik ben ik mij in de Pivot gaan verdiepen. Daar kwam ik SQL functies tegen die ik nog niet echt kende zoals Group_concat, Rollup en Row_Number(). Deze laatste ken ik nog uit de BDE tijd en was dus benieuwd of elke filter (WHERE) een zelfde recordnummer aan een bepaald record zou opleveren of van 1 tot X (aantal zichtbare records) zou lopen. Het googelen op "Mysql row number" stuurde mij een andere, maar juiste, richting op.
    Op stackoverflow.com/questions/17939198/row-number-per-group-in-mysql kwam ik de oplossing tegen. Ik ga hem nu gebruiken in het programma.
    Wellicht samen met de TMS componenten om andere delen van het programma te kunnen verwezenlijken.

    Dank heren voor het zetje in de goede richting.

    Ed
    Verkeersregelaars: Van die vervelende personen die je stil zetten om je vervolgens de verkeerde kant op te sturen.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •