Tabel opbouwen en values vullen d.m.v. 1 query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Selles

Wim Selles

27/07/2009 10:53:00
Quote Anchor link
Hallo iedereen,

Ik heb een vraag over MYSQL i.c.m. PHP.
Ik ben bezig om zelf een soort urenregistratiesysteem te maken waarin collega's hun uren kunnen bijhouden op de projecten, gekoppeld aan klanten (hierna assignments genoemd) waar ze werken. Dit kunnen ze per week invullen. (zie http://www.familieselles.nl/question/image.jpg)
Hiervoor heb ik 5 tabellen gemaakt, te weten:
- employees
- customers
- projects
- assignments
- timesheet

De week die getoond wordt, wordt opgebouwd d.m.v. onderstaande query.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Deze query gaat goed
// D.m.v. een while lus wordt de tabel getoond zoals je in de link kunt zien

$sql    =    "SELECT ".$assignments.".assignment_id,
            "
.$assignments.".customer_id,
            "
.$assignments.".employee_id,
            "
.$assignments.".project_id,
            "
.$assignments.".time_type,
            "
.$assignments.".allowed_time,
            "
.$assignments.".allowed_extra_time,
            "
.$assignments.".start_date,
            "
.$assignments.".end_date,
            "
.$assignments.".assignment_active,
            "
.$projects.".project_id,
            "
.$projects.".projectname,
            "
.$projects.".projectcode,
            "
.$customers.".customer_id
            FROM "
.$assignments.",".$projects.",".$customers."
            WHERE "
.$assignments.".employee_id='".$employee_id."'
            AND "
.$assignments.".project_id=".$projects.".project_id
            AND "
.$assignments.".customer_id=".$customers.".customer_id
            AND "
.$assignments.".assignment_active=1
            ORDER BY "
.$customers.".customername ASC";
?>


In de tabel employees staan de naam en een employee_id van de gebruiker
In de tabel customers staat de naam, een afkorting en een customer_id van de klant
In de tabel project staat de naam, een afkorting en een project_id van het project
In de tabel assignments staat een assignment_id, een emplyee_id,een customer_id en een project_id
In de tabel timesheet staat een timesheet_id, een assignment_id, de dag waarop uren zijn ingevuld (jjjj-mm-dd) en de uren

Wanneer er uren zijn ingevuld voor een bepaalde dag, bv 27-7-2008, dan dienen deze opgevraagd te worden uit de tabel timesheet a.d.h.v. een assignment_id en de dag waarop de uren zijn ingevuld. Het lijkt mij handig om dit te doen met 1 query, zie de 2e query in onderstaande code, maar die gaat niet goed, zie http://www.familieselles.nl/question/image2.jpg voor afbeelding 2.
Kan dit uberhaupt, zo ja, wat doe ik dan fout.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
// Deze query gaat niet goed, er worden nu per assignment die voorkomen
// in de tabel timesheet eenzelfde opdracht getoond
// In de tabel timesheet staan nu maar 4 resultaten gekoppeld aan
// de assignment Belastingdienst

$sql    =    "SELECT ".$assignments.".assignment_id,
            "
.$assignments.".customer_id,
            "
.$assignments.".employee_id,
            "
.$assignments.".project_id,
            "
.$assignments.".time_type,
            "
.$assignments.".allowed_time,
            "
.$assignments.".allowed_extra_time,
            "
.$assignments.".start_date,
            "
.$assignments.".end_date,
            "
.$assignments.".assignment_active,
            "
.$projects.".project_id,
            "
.$projects.".projectname,
            "
.$projects.".projectcode,
            "
.$customers.".customer_id,
            "
.$customers.".customername,
            "
.$customers.".customercode,
            "
.$timesheet.".timesheet_id,
            "
.$timesheet.".assignment_id,
            "
.$timesheet.".day,
            "
.$timesheet.".hours
            FROM "
.$assignments.",".$projects.",".$customers.",".$timesheet."
            WHERE "
.$assignments.".employee_id='".$employee_id."'
            AND "
.$assignments.".project_id=".$projects.".project_id
            AND "
.$assignments.".customer_id=".$customers.".customer_id
            AND "
.$timesheet.".assignment_id=".$assignments.".assignment_id
            AND "
.$assignments.".assignment_active=1
            ORDER BY "
.$customers.".customername ASC";
?>


M.v.g. Wim
 
PHP hulp

PHP hulp

25/11/2024 00:11:06
 
Wim Selles

Wim Selles

01/08/2009 09:42:00
Quote Anchor link
Ik ben er nog niet achter en heb het nu met meerdere querys gedaan, maar als iemand een oplossing heeft hoor ik het graag

Groeten

Wim
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.