advanced query weergave
Ik probeer een soort van rooster/agenda te maken met behulp van PHP en MySQL. Ik heb een vraag over 1 onderdeel daarvan. Nu vroeg ik mij af of er iemand is die mij iets kan uitleggen, of misschien een tutorial weet over het volgende:
k wil graag op het scherm een weektabel laten zien waarbij de dagen van de week de kolommen zijn; ma di wo do vr za zo.
Ik zou dan graag in elke kolom[dag] van het weekoverzicht de gebruikers van een afdeling laten zien die werken die dag met de IN en OUT tijd.
Ik gebruik de volgende tables:
table calendar:
ag_id int
event
u_id
event_type
received [Date]
received2 [Time IN]
event_finish2 [Time OUT]
group
table location
lok_id
lok_building
lok_room
Loc_descr
table users:
u_id
u_location
u_room
u_department
u_type
u_min [min hours per week]
u_max [max hours per week]
u_hours [total hours worked this week]
u_notes
u_function
u_telephone
u_email
Then I use the following query:
SELECT c.*, u.*, l.* FROM calendar AS c
LEFT JOIN users AS u ON c.u_id = u.u_id
LEFT JOIN location AS l ON l.l_id = u.lo WHERE WEEKOFYEAR('') = $weeknumber
Waarschijnlijk is dit dan niet juist, maar ja ik zou niet weten hoe ik het goed krijg.
Ik wil graag op het scherm een weektabel laten zien waarbij de dagen van de week de kolommen zijn; ma di wo do vr za zo.
Ik zou dan graag in elke kolom[dag] van het weekoverzicht de gebruikers van een afdeling laten zien die werken die dag met de IN en OUT tijd.
Is dit uberhaupt mogelijk? Veel online agenda's laten bijvoorbeeld ook vaak een weekoverzicht zien toch, dit is toch een beetje vergelijkbaar dacht ik.
Hopelijk kan iemand me in de juiste richting helpen, want ik heb echt geen idee.
Grt,
Kabbi
Gewijzigd op 01/01/1970 01:00:00 door Kabbi
SELECT tijd_in, tijd_out, werknemer
FROM tabelnaam
WHERE WEEK(datum, 1) = 13
ORDER BY tijd_in ASC
Edit:
Correctie: je zult de MySQL funktie YEARWEEK nodig hebben, anders kom je in de problemen met je weeknummers, die immers ieder jaar terugkeren.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
In de maandagkolom zijn dan een aantal wernemrers die met hun in en out worden weergegeven. Hetzelfde voor dinsdag en woensdag, etc. Het probleem is dat als ik 1 rij laat weergeven voor een werknemer dat als deze niet op dinsdag werkt bijvoorbeeld, dat dit veld in deze rij in dinsdag leeg is.
Degene die dan op dinsdag werkt wordt pas een rij verder getoond bijvoorbeeld dan. Begrijp je wat ik bedoel?
Bijvoorbeeld voor 1 taak laat ik zien wie er in de ochtend is en wie in de middag op een dag:
A=Medewerker A
B= Medewerker B, etc
Week: 07 2007
Ma Di Wo Do Vr Za Zo
ochtend: A B A C B A C
Middag: A A A B C B C
Begrijp je wat ik bedoel? Is dit uberhaupt mogelijk op een goede manier weer te laten geven?
Zoals ik het begrijp zou jij het gewoon zo doen: [o=ochtend/m=middag]
Week: 07 2007
Ma Di Wo Do Vr Za Zo
medwrker A o/m A /m A o/m A/o
medwrker B /o
etc
Ik ben benieuwd, hoe hoe zou ik nu het rooster logisch kunnen maken?
Groet,
Kabbi
kabbi schreef op 02.03.2007 11:53:
Het probleem is dat als ik 1 rij laat weergeven voor een werknemer dat als deze niet op dinsdag werkt bijvoorbeeld, dat dit veld in deze rij in dinsdag leeg is.
Degene die dan op dinsdag werkt wordt pas een rij verder getoond bijvoorbeeld dan. Begrijp je wat ik bedoel?
Degene die dan op dinsdag werkt wordt pas een rij verder getoond bijvoorbeeld dan. Begrijp je wat ik bedoel?
Niet helemaal ;-) Hoe ziet je MySQL tabel er op dit moment uit? Heb je al een datamodel in je hoofd?
Ik ben net begonnen en me nog aan het orienteren. Maar ik heb snel even verscheidene tabellen aangemaakt:
in eerste instantie
* Lokatietabel met de lokatie en lokatiecode + afdeling
* user tabel met gebruikersgegevens
* roostertabel;
user_id / datum[yyyy-mm-dd] / tijdIN / tijdUIT /event
Ik zou het weeknummer eventueel ook kunnen opslaan dan
Ik combineer dan de gegevens uit de drie tabellen in de weergave.
Het lukt me wel een query uit te voeren en dan het resultaat te krijgen voor een gebruiker per rij.
Ik zou graag een weekoverzicht willen tonen wie er werken op welke dagen plus de tijd in en tijd uit.
Nu laat ik rijen zien "per medewerker" dit betekent dat als ik de rij laat zien van medewerker A en deze werkt elke dag aaneen dat ik dan voor elke kolom [ma t/m zo] een IN en OUT tijd heb.
Maar als iemand alleen op dinsdag werkt dan zie ik alleen in de DI kolom een veld met IN en OUT voor die medewerker in die rij. De rest van de velden zijn dan leeg. Een volgende medewerker komt weer op een nieuwe rij, etc.
Wat ik eigenlijk zou willen is de lege velden in een rij kunnen opvullen met de IN en OUT van de medewerker die die dag wel werkt. Stel ik zet op de Y-as de tijden en die verdeel ik in ochtenden en middagen. Op de X as als kolommen zet ik de dagen. Dan zie ik precies per dag wie in de ochtend werkt en wie in de middag.
Werkt mederker A wel op Maandagochtend en middag, maar niet op Dinsdag ochtend en middag, dan zou ik in de volgende kolom op dezelfde rij graag medewerker B weergeven die op dinsdag in de ochtend en in de middag werkt...
Ik weet niet of dit mogelijk is? Ik hoop dat je me nu begrijpt.
grt
Gewijzigd op 01/01/1970 01:00:00 door kabbi
ik ben even op pad, maar ik hou het topic in de gaten. Intussen zijn er vast wel andere leden die je een duwtje in de goede richting kunnen geven. Vanavond ben ik er weer!
nog even extra:
Begrijp je het probleem? Er worden mensen ingepland op een "taak".
Nu kan het ook zijn dat een medewerker op een dag twee keer werkt op twee verschillende dagdelen. Je zou dan twee keer een "IN" en "OUT" tijd krijgen op een dag voor 1 medewerker. Dit betekent in mijn database tabel twee keer invoeren en twee rijen. Nu maakt dat niet zoveel uit, allen als dan de medewerker wel op maandag werkt en niet op dinsdag dan is het dinsdag veld leeg in die rij [vd query] en zou ik daar graag de medewerker plaatsen die dan werkt...
grtn
Gewijzigd op 01/01/1970 01:00:00 door kabbi
Ik zou mijn vraag nog eens anders proberen te formuleren.
Op dit moment probeer ik "roosterprogrammaatje" te maken. Ik vraag mij af hoe het mogelijk is om een query resultaat goed weer te geven. In mijn query haal ik alle resultaten voor een bepaalde week uit de database. Nu zou ik dit resultaat graag in de vorm van een tabel voor de hele week willen laten weergegen. Ik zou graag als kolomnamen de dagen van de week weergeven, als; ma di wo do vr za zo
Het probleem is dat de query alle resultaten laat zien in verschillende rijen. Maar ik zou graag onder de kolom di alle wernemers + tijden in en out laten zien die op dinsdag werken en in de kolom woensdag [wo] alle medewerkers die woensdag werken, incl. alle tijden [tijd IN / OUT]. Is dit mogelijk? Of is dit alleen mogelijk als ik per dag een andere query laat uitvoeren?? Het liefst gebruik ik 1 query en zou dan alles goed willen laten weergeven, ook omdat ik de mogelijkheid wil bieden om het een en ander naar excel te exporteren om af te kunnen drukken.
Hopelijk is er iemand die mij hiermee op weg kan helpen!
Alvast bedankt iig.
gebruikte query:
SELECT c.*, u.*, l.* FROM cal AS c
LEFT JOIN usrs AS u ON c.u_id = u.u_id
LEFT JOIN lo AS l ON l.l_id = u.lo WHERE WEEKOFYEAR('') = $weeknummer
[bovenstaande geeft dus wel rijen, maar de data per rij is dus alle data die bij 1 werknemer hoort...]
Grt,
Kabbi
Gewijzigd op 01/01/1970 01:00:00 door kabbi
Ik heb weer het een en ander geprobeerd, jammer genoeg is het me nog steeds niet gelukt. Ik heb echt geen idee hoe dit te doen. Momenteel heb ik dit:
Ik gebruik de volgende tables:
table calendar:
ag_id int
event
u_id
event_type
received [Date]
received2 [Time IN]
event_finish2 [Time OUT]
group
table location
lok_id
lok_building
lok_room
Loc_descr
table users:
u_id
u_location
u_room
u_department
u_type
u_min [min hours per week]
u_max [max hours per week]
u_hours [total hours worked this week]
u_notes
u_function
u_telephone
u_email
Then I use the following query:
SELECT c.*, u.*, l.* FROM calendar AS c
LEFT JOIN users AS u ON c.u_id = u.u_id
LEFT JOIN location AS l ON l.l_id = u.lo WHERE WEEKOFYEAR('') = $weeknumber
Waarschijnlijk is dit dan niet juist, maar ja ik zou niet weten hoe ik het goed krijg.
Ik wil graag op het scherm een weektabel laten zien waarbij de dagen van de week de kolommen zijn; ma di wo do vr za zo.
Ik zou dan graag in elke kolom[dag] van het weekoverzicht de gebruikers van een afdeling laten zien die werken die dag met de IN en OUT tijd.
Is dit uberhaupt mogelijk? Veel online agenda's laten bijvoorbeeld ook vaak een weekoverzicht zien toch, dit is toch een beetje vergelijkbaar dacht ik.
Hopelijk kan iemand me in de juiste richting helpen, want ik heb echt geen idee. Misschien staat deze post ook in het verkeerde forum? Excuses.
Grt,
Kabbi
Gewijzigd op 01/01/1970 01:00:00 door kabbi