[SQL]Access query koppelen

Pagina: 1
Acties:
  • 83 views sinds 30-01-2008

  • Possstema
  • Registratie: Juli 2002
  • Laatst online: 10-03 22:48
Hallo, ik ben een database in access aan het maken. Dit is als probeersel voor een (niet bestaand) webdesign bedrijfje.

Ik heb de volgende tabellen:

Klanten
Hoofddomeinen
Domeinen
Subdomeinen
Opdrachten

Nou wil ik het volgende:

In de Opdrachten tabel staat een veld waarin staat bij welk domein die opdracht hoort en in de Domeinen tabel staat bij welke klant dat domein hoort. Nou wil ik dat er wordt berekend/uitgezocht hoeveel er in totaal is uitgegeven aan opdrachten door een klant. Dat moet dmv een query, nou dacht ik zelf dat access dus eerst moet uitzoeken welke domeinen er bij die klant horen en daarna kijkt welke opdrachten er bij die domeinen horen. Die bedragen die daar uit komen moeten worden opgeteld en dan ist klaar. Maar dat krijg ik met geen mogelijkheid (in access) voor mekaar. Ik heb al heel vaak die help doorgezocht en op google gezocht maar ik heb geen idee hoe ik dat nu moet doen.

Om het te verduidelijken wat ik wil heb ik een script geschreven in php wat doet wat ik in access wil hebben:

PHP:
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
<?php
$database_driver = "Microsoft Access Driver (*.mdb)";
$database_pad = "C:/JSPdesign.mdb";

$database = "DRIVER=" . $database_driver . ";DBQ=" . $database_pad . ";";

$link = odbc_connect($database, "", "");

$sql = "SELECT Id,voornaam,achternaam FROM Klanten";
$resultaat = odbc_exec($link, $sql);
while ($fetch_resultaat_1 = odbc_fetch_array($resultaat))
{
    $sql = "SELECT Id FROM Domeinen WHERE Klant = " . $fetch_resultaat_1[Id];
    $resultaat = odbc_exec($link, $sql);
    while ($fetch_resultaat_2 = odbc_fetch_array($resultaat))
    {
        $sql = "SELECT Prijs FROM Opdrachten WHERE Domein = " . $fetch_resultaat_2[Id];
        $resultaat = odbc_exec($link, $sql);
        while ($fetch_resultaat_3 = odbc_fetch_array($resultaat))
        {
            $totaalbedrag = $totaalbedrag + $fetch_resultaat_3[Prijs];
        }
    }
    
    echo "Het totale bedrag over alle opdrachten van ", $fetch_resultaat_1[voornaam];
    echo " ", $fetch_resultaat_1[achternaam], " is ", $totaalbedrag, " euro.<br>\n";
}
?>

[ Voor 7% gewijzigd door Possstema op 01-05-2004 20:35 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Tip: zoek eens in de help naar 'join'. Dat doet wat je wilt :) Wat je ook kunt doen is in het queryontwerpvenster alle drie de tabellen opnemen en een join leggen (klik sleep met de muis) tussen de juiste velden. Of doe een wizard en bekijk het resultaat. Mogelijkheden zat toch :) ?

offtopic:
Maar onder ons gezegd en gezwegen, dit is een rare vraag voor iemand die database driven websites zegt te ontwerpen :?

[ Voor 23% gewijzigd door Lustucru op 01-05-2004 21:02 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Possstema
  • Registratie: Juli 2002
  • Laatst online: 10-03 22:48
Niesje schreef op 01 mei 2004 @ 20:59:
offtopic:
Maar onder ons gezegd en gezwegen, dit is een rare vraag voor iemand die database driven websites zegt te ontwerpen :?
offtopic:
Ik heb nergens staan dat ik website's maak ism een database. Ik probeer het wel, daar niet van, maarja ik kan net een half jaar php en nog minder lang mysql, en ik zit ook nog gewoon op school, dus het lijkt me wat te om gelijk te zeggen dat het raar is om zoiets te vragen.


Maar nu ff ontopic :). Ik heb nu zoiets:
code:
1
2
SELECT sum(Opdrachten.Prijs) AS [Totale ontvangsten]
FROM Klanten INNER JOIN Opdrachten ON Klanten.Id = Opdrachten.Klant;

Maar dit geeft alleen de totale ontvangsten weer, hoe pas ik dit nu aan zodat ik het per klant heb?

Ik heb maar even een uitdraai van de database gemaakt (en zoals je kunt zien heb ik de tabellen ook aangepast, hoofddomein en subdomein zijn weg en domeinen heet nu site's):
code:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Klanten


Id: 1
Voornaam: Jorrit
Achternaam: Posthuma
Woonplaats: Leeuwarden
Straatnaam: -
Huisnummer: -
Postcode: -
Telefoon Nummer: -
Fax Nummer: -
Email Adres: -

Id: 2
Voornaam: Nella
Achternaam: Jong, de
Woonplaats: Leeuwarden
Straatnaam: -
Huisnummer: -
Postcode: -
Telefoon Nummer: -
Fax Nummer: -
Email Adres: -

Opdrachten


Id: 1
Opdracht Type: Nieuwe Site
Opdracht Soort: Volledige Site (client en server side)
Prijs: 50.0000
Klant: 1
Site: 1
Bestede Tijd: 1899-12-30 10:00:00

Id: 2
Opdracht Type: Site Updaten
Opdracht Soort: Alleen Scripten (server side)
Prijs: 20.0000
Klant: 1
Site: 1
Bestede Tijd: 1899-12-30 02:00:00

Id: 3
Opdracht Type: Nieuwe Site
Opdracht Soort: Volledige Site (client side)
Prijs: 100.0000
Klant: 2
Site: 2
Bestede Tijd: 1899-12-30 07:00:00

Sites


Id: 1
Naam: JSPdesign
Inhoud: -
Klant: 1

Id: 2
Naam: otemmazwart
Inhoud: -
Klant: 2

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

laat ik nou op je website gekeken hebben en daar staat toch echt een prachtig verhaal wat je allemaal doet... ;)
Anyway, als je serieus met databases aan de slag wilt kan ik je alleen maar aanraden daar wat literatuur over te raadplegen. Loop eens de plaatselijke bibliotheek binnen en je vindt meters literatuur over het ontwerpen van (relationele) databases -al dan niet icm websites-, waarin al dit soort vragen uitgebreid behandeld worden.
En on topic: hier zijn dus de where statements voor; of group by en sum() en Having.
Succes

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Possstema
  • Registratie: Juli 2002
  • Laatst online: 10-03 22:48
Dit werkt wel:

code:
1
2
3
SELECT sum(Prijs) AS [Totaal ontvangstbedrag pp]
FROM Opdrachten
WHERE Klant = Klanten.Id;


Alleen moet ik nu elke keer Klanten.Id intypen, en daarom kan ik het ook niet bij een fomulier invoegen.

Afbeeldingslocatie: http://download.jspdesign.nl/parameter.gif

Afbeeldingslocatie: http://download.jspdesign.nl/rapport.gif

Is het ook mogelijk dat access dit zelf invult bij een formulier of rapport?


offtopic:
Ik zei ook al, ik probeer het wel, maar idd ik zal eens naar boeken zoeken die echt specefiek over SQL gaan, ik kan nu net alleen een beetje de basis (kan bijvoorbeeld wel een simpel forum schrijven, Doe maar niet, we geloven je op je woord dat je een forum kan maken. :)

[ Voor 18% gewijzigd door gorgi_19 op 02-05-2004 14:28 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
Dit vind je toch ook in iedere tutorial hoor:
code:
1
2
3
4
SELECT klanten.naam, sum(prijs)
FROM opdrachten, klanten
WHERE opdrachten.klantid = klanten.klantid
GROUP BY klanten.naam

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:00

gorgi_19

Kruimeltjes zijn weer op :9

Goed, nu zijn we aangekomen bij een basisuitleg van joins en SQL in het algemeen. :) Er kunnen op dit moment hele uitleggen getikt worden, alleen deze zijn al eerder geschreven. Kijk bijvoorbeeld eens op http://www.w3schools.com/sql/default.asp . Iets 'dichter bij huis', de FAQ van PW, en dan specifiek: P&W FAQ - SQL

Daarnaast lijkt me dat er met Google ook wel het een en ander aan tutorials te vinden is. :) Omdat er genoeg informatie te vinden is op Internet over deze onderwerpen, gaat deze dicht. :) Succes met je applicatie.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.