[PHP] MySQL outer join? *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ben voor school bezig met een project, en zoals altijd kom je dan nogal wat dingen tegen waarvan je niet zoveel verstand hebt.

het gaat om een administratie systeem waarin werknemers hun wrkverantwoording in kunnen vullen en dat wordt dan allemaal verwerkt naar facturen e.d. blablabla alles wat erbij hoort.

mijn vraag is:

ik heb drie tabellen

werk (werkverantwoording)
project (projectoverzicht)
factuur (facturen)

facturen bestaat uit onder andere een begin_factuurdatum en een eind_factuurdatum (deze laatste heet periode2).

ik wil alle werkverantwoordingen zien van een bepaalde datum (deze heet werkdatum in de db en dit lukt al) maar de rij van werkverantwoording moet alleen zichtbaar zijn als,

factuur.project_id = werk.project_id AND factuur.periode2<werk.werkdatum

nou heb ik de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$rs=query("SELECT werk.uren,werk.werkzaamheden, werk.werk_id, project.projectnaam FROM 
factuur, werk,project WHERE werk.project_id=project.project_id AND project.project_id=factuur.project_id(+) 
AND  project.afgerond=0 AND factuur.periode2<werk.werkdatum AND werkdatum='$showtime' ");

while($data=mysql_fetch_object($rs))
{
  print("\n <tr class=bodytabel>");
  print("\n  <td><input type=radio name=werkid value=$data->werk_id></td>");
  print("\n  <td>$data->projectnaam</td>");
  print("\n  <td>$data->uren</td>");
  print("\n  <td>$data->werkzaamheden</td>");
  print("\n </tr>");
  $tel++;   
}


alvast bedankt, hoop dat ik het duidelijk uitgelegd heb... :|

btw. dat met het plusje werkt niet... dat is iets van oracle... weet iemand hoe dat moet met mysql

[ Voor 11% gewijzigd door Verwijderd op 09-06-2003 15:50 ]


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Open de MySQL docs en lees "join syntax" door. Vooral het stuk over left join.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zover was ik zelf ook al... maar daar kom ik dus niet uit... staat er een beetje vaag.

Acties:
  • 0 Henk 'm!

  • xoror
  • Registratie: November 1999
  • Niet online
wat begrijp er er precies niet van ?

Eenvoudig + Goedkoop Mitsubishi Warmtepomp uitlezen/besturen met een ESP32


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
als ik de code nou verander naar onderstaand, werkt het prima...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$rs=query("SELECT werk.uren,werk.werkzaamheden, werk.werk_id, project.projectnaam FROM 
factuur, werk,project WHERE werk.project_id=project.project_id AND project.project_id=factuur.project_id
AND  project.afgerond=0 AND factuur.periode2<werk.werkdatum AND werkdatum='$showtime' "); 

while($data=mysql_fetch_object($rs)) 
{ 
  print("\n <tr class=bodytabel>"); 
  print("\n  <td><input type=radio name=werkid value=$data->werk_id></td>"); 
  print("\n  <td>$data->projectnaam</td>"); 
  print("\n  <td>$data->uren</td>"); 
  print("\n  <td>$data->werkzaamheden</td>"); 
  print("\n </tr>"); 
  $tel++;     
}
?> 


nou is het echte probleem. wat ik hierboven ff vergat te vermelden dat er soms nog geen factuurgemaakt is... wat dus inhoud dat dit niet bestaat (project.project_id=factuur.project_id) en dus dit ook niet. (factuur.periode2<werk.werkdatum) en daarmee wordt de rij niet geselecteerd. probleem dus...

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

MySQL zal vast wel iets van een IS Null expressie oid hebben.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Probeer dit eens:
from project left join factuur using (project_id) inner join werk using (project_id)
Verwijderd schreef op 09 June 2003 @ 15:58:
zover was ik zelf ook al... maar daar kom ik dus niet uit... staat er een beetje vaag.
Dat bleek niet uit de eerste post.

[ Voor 52% gewijzigd door Olaf van der Spek op 09-06-2003 16:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
moet nu eerst gaan werken. ik probeer je oplossing straks even. laat ik dan weten of het is gelukt.

en dat klopt inderdaad, had er niiet in de eerste post bijgezet dat ik al had gekeken. zorry
Pagina: 1