Toon posts:

[Sql] Query goed opgebouwd voor dit probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik ben bezig aan een database om een magazijn te onderhouden. Je moet de stock bijhouden, maar ook bestellingen doen, bestellingen ontvangen en facturen controleren.
Aangezien een product bij meerdere leveranciers kan gekocht worden, aan verschillende prijzen heb ik hiervoor een intersectietabel gebruikt. Mijn database structuur ziet er zo uit:

Leverancier -|-----0< ArtikelPerLeverancier >0-----|- Artikel -|----0< ArtikelPerBestelling >0-----|- Bestelling

tblLeverancier:
leverancierId
leverancierNaam
leverancierFax
leverancierEmail
tblArtikelPerLeverancier
ArtikelId
LeverancierId

Prijs
tblArtikels
productId
....
tblArtikelPerBestelling
ArtikelId
BestellingId
datum

Aantal
bestelling
bestellingId
bestellingDoor
bestellingOpmerking

Ik ben dit in Access aan het maken om de simpele reden dat het me zo gevraagd werd maar wanneer ik een Query uitvoer met alle velden uit de 2 intersectie tabellen kan ik geen enkele record toevoegen maar ik krijg geen foutmelding van acces, kan iemand me vertellen wat er mis is met mijn query, waarom die niet werkt?

Alvast bedankt

  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

Begin eens met te vertellen om welke query het gaat en welke foutmelding je krijgt. Dat maakt het voor ons ook makkelijker om te helpen ;)

[ Voor 4% gewijzigd door momania op 06-07-2007 08:37 ]

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
De query zou ervoor dienen om meedere producten die bij een leverancier kunnen besteld worden toe te voegen aan 1 bestelling.. Ik krijg niet echt een foutmelding maar zoals ik al zei, ik werk in access en als ik de query bekijk dan kan ik geen records toevoegen.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

Begrijp ik hieruit dat je met 1 query meerdere records over meerdere tabellen tegelijk probeert in te voeren?

En met 'vertellen om welke query het gaat' bedoelde ik dus: post gewoon je query hier eens ;)
(tussen [code=sql] en [/code] tags)

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
SQL:
1
2
SELECT apl.productId, apl.leverancierId, apl.prijs, tblArtPerBestelling.artikelId, tblArtPerBestelling.bestellingId, tblArtPerBestelling.datum, tblArtPerBestelling.atl
FROM tblLeveranciers INNER JOIN (tblBestellingen INNER JOIN ((tblArtikels INNER JOIN tblArtPerLeverancier ON (tblArtikels.productId = tblArtPerLeverancier.productId) AND (tblArtikels.productId = tblArtPerLeverancier.productId)) INNER JOIN tblArtPerBestelling ON tblArtikels.productId = tblArtPerBestelling.artikelId) ON tblBestellingen.bestellingId = tblArtPerBestelling.bestellingId) ON tblLeveranciers.leverancierId = tblArtPerLeverancier.leverancierId;

Het is niet echt netjes, ik hebt het opgebouwd met acces zelf...

  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

Wat is 'apl' ? Ik zie nergens die alias voor een tabel gespecificeerd in je query.

Ook je join constructie is nogal raar. Volgens mij zijn haakjes daar niet eens toegestaan.

Doe gewoon zoiets:
SQL:
1
2
3
4
-- select etc
from tabel1 join tabel2 on tabel1.id = tabel2.fk,
join tabel3 on tabel2.id = tabel3.fk
-- etc

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT 
    apl.productId,
    apl.leverancierId,
    apl.prijs,
    apb.artikelId,
    apb.bestellingId,
    apb.datum, 
    apb.atl
FROM 
    tblArtPerLeverancier apl,
    tblLeveranciers l,
    tblArtikels a,
    tblArtPerBestelling apb,
    tblBestellingen b
WHERE
    b.bestellingId = apb.bestellingId AND
    apl.leverancierId = l.leverancierId AND
    apl.productId = a.productId AND
    apb.artikelId = a.productId

Dat was de query uit access, ik heb deze nu herschreven, de JOIN syntax ligt me nog niet 100% dus heb ik maar op de oude manier gewerkt.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

Die oude query werkte wel? Waarom zou je 'm dan omschrijven met joins?

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
Je begrijpt me verkeerd, die sqlstring die ik eerst poste kwam rechtstreeks uit access, deze was opgebouwd met joins, de sqlstring die ik laatst poste is mijn herschreven versie mar doet exact hetzelfde maar is leesbaarder voor mensen die me willen helpen ;) maar het probleem blijft, om de een of andere reden kan ik geen records invoegen en krijg ik geen foutmelding.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

Verwijderd schreef op vrijdag 06 juli 2007 @ 09:30:
maar het probleem blijft, om de een of andere reden kan ik geen records invoegen en krijg ik geen foutmelding.
Ok, maar je geeft nu voorbeelden van een select. Ik zie nergens een voorbeeld van een insert ;)

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
de INSERT doe ik via access omdat het via een subformulier gaat, ligt mijn probleem dan puur bij access?

Verwijderd

Als je form gebaseerd is op de bovenstaande query kun je het wel vergeten. Met een Access form kun je namelijk geen inserts/updates doen op queries over meerdere tabellen.
Je zult echt zelf moeten zorgen voor de updates/inserts (via VBA bijvoorbeeld).

Verwijderd

Topicstarter
ahzo, bedankt!
Pagina: 1