Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Meerdere lijnen uit query als 1 weergeven

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een database waar een aantal timesheets instaan.
Zo is het momenteel opgesplitst op weekbasis. Dit wil zeggen dat er voor elke week een lijn wordt aangemaakt met de verschillende data en uren, en het soort document.
Met het soort document bedoel ik Timesheet, Vakantie, ...
Het kan dus dat er 2 of meerdere lijnen staan voor dezelfde week maar met een andere boekcode.
Wat ik nu zou willen doen is het volgende:
Ik wil een query trekken op weeknummer (kan dus bv. 3 lijnen genereren) en daarvan wil ik dat wanneer de data in een bepaald veld (timestamp_sat) hetzelfde is voor de drie lijnen (bv 00:00) hij me deze lijn maar 1 keer weergeeft.

Waarom wil ik dit ? Omdat ik een overzicht wil maken per gebruiker wat hij die dag heeft gedaan. Als er bv 3 lijnen staan (2dagen werk, 1 dag vakantie en 2 dagen ziekte) wil ik dat ik kan inkleuren:
ma -- groen (aanwezig)
di -- groen (aanwezig)
wo -- oranje (vakantie)
do -- rood (ziekte)
vr -- rood (ziekte)

Als ik nu een query trek en ik doe een if op het veld, dan krijg ik natuurlijk 3 lijnen ...

  • Brainstorm
  • Registratie: November 2000
  • Laatst online: 16-11 18:53
Welk database systeem? De oplossing die je zoekt zal per databasesysteem namelijk anders geimplementeerd kunnen worden.

Programmer's Drinking Song: 99 little bugs in the code, 99 bugs in the code, Fix one bug, compile it again, 100 little bugs in the code. (go to start if bugs>0)


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 00:12

NetForce1

(inspiratie == 0) -> true

Dat gaat je volgens mij niet lukken, probeer je eens voor te stellen hoe dat resultaat er dan uit moet komen te zien. Ik denk dat het handiger is om dit in je code te regelen. Maar sowieso blijft het een beetje vaag allemaal zolang wij je datamodel niet kennen, misschien dat je daar de relevante delen van zou kunnen posten.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 17:29
Waarom haal je niet gewoon per dag de desbetreffende kleur op?
Ik wil een query trekken op weeknummer (kan dus bv. 3 lijnen genereren) en daarvan wil ik dat wanneer de data in een bepaald veld (timestamp_sat) hetzelfde is voor de drie lijnen (bv 00:00) hij me deze lijn maar 1 keer weergeeft.
Group By?

[ Voor 67% gewijzigd door BarôZZa op 26-04-2008 00:43 ]


Verwijderd

Topicstarter
Ik geef even verdere uitleg.
Het systeem draait in MySQL en PHP.
De tabel die ik wil queryen is opgezet als volgt:

ID
week
year
datestamp_mon
timestamp_mon
datestamp_tue
timestamp_tue
datestamp_wed
timestamp_wed
datestamp_thu
timestamp_thu
datestamp_fri
timestamp_fri
datestamp_sat
timestamp_sat
datestamp_sun
timestamp_sun
type

De user krijgt de mogelijkheid zijn uren in te geven.
Bij type heeft hij de keuze uit PRO(werken), VAC(vakantie), SIC(Ziekte)
Dus als hij bv. deze week ma, di, wo en donderdag heeft gewerkt, en vrijdag verlof had, dan krijg ik in de database 2 lijnen namelijk
voor de dagen die hij werkte een lijn PRO met de waardes (uren) ingevult in timestamp_ voor die dagen
voor de dagen die hij verlof had krijg ik een tweede lijn VAC met de waardes (uren) ingevult in timestamp_ voor die dagen

Wat ik nu wil doen is een overzicht maken per gebruiker per maand
Dus ik wil gaan zien in welke velden er input staat van uren en die dan een kleurcode gaan geven per type (PRO, VAC, SIC)
Maar als ik dit nu doe, dan ziet hij 2 keer datestamp_sat staan (een lijn PRO en een lijn VAC) die leeg zijn in timestamp_sat (beiden) dus geeft hij me 2 keer een kleurcode voor die zaterdag.
Ik zou echter enkel 1 lijn willen weergeven. Dus als hij ziet dat er meerdere lijnen zijn, maar de waardes van timestamp_ zijn dezelfde (leeg in dit geval) moet hij die datum maar 1 keer weergeven.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Euh... WTH?
Waarom niet gewoon een tabel als (bijvoorbeeld):

[ID] <int>
Date <datetime>
Employee <int>
Type <int FK/varchar>
Hours/minutes <int>

4 a 5 velden en voila. Ik heb geen flauw idee wat je met 'query trekken' en 'lijnen' bedoelt (ik neem aan een query uitvoeren en records respectievelijk) maar wellicht is een (opfris?)cursus SQL geen slecht idee.

Verder wil je dit soort dingen in je applicatie 'afhandelen'. Een DB is niet bedoeld om weergaves te knutselen van je data; een DB is er om (relationele) data op te slaan en op te halen op een efficiënte manier; hoe je het weergeeft is een taak van je GUI

[ Voor 3% gewijzigd door RobIII op 26-04-2008 01:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Met query trekken bedoel ik mysql_query
met lijnen bedoel ik rows.

Ik weet dat de structuur niet echt is wat het moet zijn, maar dat is een overblijfsel van vorige werknemer.
De bedoeling is dan ook die data te parsen in PHP en weer te geven in een webpagina, niet in de DB op te slaan.

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 17:29
Dat is toch geen probleem als je PHP gebruikt?

Ik neem aan dat je de gehandicapte dbstructuur niet wil aanpassen.

Dus dan onthoud je gewoon de data en kijk je of de volgende record van dezelfde week is. En voeg je de niet-ingevulde data toe. Als het weeknummer verandert kan je de data weergeven.

Ik dacht trouwens ook dat je de data letterlijk als lijnen wilden weergeven oid. Vreemd taalgebruik.

[ Voor 14% gewijzigd door BarôZZa op 26-04-2008 01:22 ]


Verwijderd

Topicstarter
maar met welke functie kan ik dat dan, zeggen dat wanneer de data en de week dezelfde is, hij maar 1 keer de waarde van het veld (of in dit geval maar 1 keer kleuren) moet weergeven ?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op zaterdag 26 april 2008 @ 00:52:
datestamp_mon
timestamp_mon
datestamp_tue
timestamp_tue
datestamp_wed
timestamp_wed
datestamp_thu
timestamp_thu
datestamp_fri
timestamp_fri
datestamp_sat
timestamp_sat
datestamp_sun
timestamp_sun
Jij bent er eentje van de school die stelt dat genummerde kolommen wel alle normalisatieregels overtreden maar als je de weekdagen uitschrijft 'vast niet'?

Professionele website nodig?


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 26 april 2008 @ 01:23:
maar met welke functie kan ik dat dan, zeggen dat wanneer de data en de week dezelfde is, hij maar 1 keer de waarde van het veld (of in dit geval maar 1 keer kleuren) moet weergeven ?
Ik ben niet zo heel bekend met php, maar probeer eens de functie create_lines_from_records_that_just_got_returned_by_the_other_function_and_color_them_nice().

Of je gaat aan de gang met een concept dat ze programmeren noemen; dat is het samenvoegen van statements die wél bestaan in de taal die je gebruikt totdat je een resultaat bereikt dat je jezelf ten doel had of hebt gesteld.
curry684 schreef op zaterdag 26 april 2008 @ 01:28:
[...]

Jij bent er eentje van de school die stelt dat genummerde kolommen wel alle normalisatieregels overtreden maar als je de weekdagen uitschrijft 'vast niet'?
Bij genummerde kolommen is het slecht gebruik want wie zegt dat column1 t/m column56 wel genoeg is in de volgende versie? Misschien heb je dan wel column57 nodig. Maar een week zal altijd bestaan uit 7 dagen :X /eruitlulmodus :P :+

[ Voor 26% gewijzigd door RobIII op 26-04-2008 01:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 17:29
Denk je dat er een standaardfunctie is voor dit soort enorm lelijk gestructureerde data?

Je zal de data gewoon zelf moeten herindelen met behulp van een scriptje.

Verwijderd

Topicstarter
Kijk, ik zal even tonen aan de hand van afbeeldingen wa ik wil:
Afbeeldingslocatie: http://img168.imageshack.us/img168/185/nuwelgoednc6.png

en wat ik momenteel krijg en dus niet wil:
Afbeeldingslocatie: http://img183.imageshack.us/img183/2888/nunietgoedcx1.png

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 26 april 2008 @ 01:30:
Kijk, ik zal even tonen aan de hand van afbeeldingen wa ik wil:
[afbeelding]

en wat ik momenteel krijg en dus niet wil:
[afbeelding]
Misschien was ik niet duidelijk genoeg; maar "dit is wat ik wil en dat is wat 't doet" is niet de manier waarop we hier werken; we verwachten enige basiskennis en daarbij een flinke bak eigen inzet om tot een oplossing van je probleem te komen. We hebben je al aardig op weg geholpen denk ik zo (onder het motto "give a man a fish and he will eat for a day, teach a man how to fish and he will eat for a liftetime") en in de juiste richting gewezen. Vanaf daar is het "good luck" en ben je weer van harte welkom met concrete vragen als je ergens tegen aan loopt ;) (To be clear: "het werkt niet" of "ik wil het zo" is dus geen concrete vraag).

Kijk anders ook even in onze Programming Beleid Quickstart en Registratievoorwaarden / korte FAQ

En let dan idd even op de post hier onder me ;) mayo123 was me weer voor :P

[ Voor 34% gewijzigd door RobIII op 26-04-2008 01:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op zaterdag 26 april 2008 @ 01:30:
Kijk, ik zal even tonen aan de hand van afbeeldingen wa ik wil:
[afbeelding]

en wat ik momenteel krijg en dus niet wil:
[afbeelding]
Nou als ik dat zo zie moet je met name even bijlezen over de keywords ORDER BY en DISTINCT.

Professionele website nodig?


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 17:29
Hoewel het maar twee screenshotjes zijn denk ik dat je vooral gewoon simpelweg de basics van PHP en MySQL onder de knie moet zien te krijgen.

Het enige wat er gebeurt is dat de gegevens uit de db worden gehaald en een kleur wordt weergegeven. De records worden niet eens gesorteerd op datum oid.
Pagina: 1