Toevoegquerie, Where statemunt

Status
Niet open voor verdere reacties.

Ronaldxx

Gebruiker
Lid geworden
13 dec 2009
Berichten
198
Toevoegquerie, Where statement

Ik maak gebruik van een toevoeg querie die een rij gegevens kopieerd naar een tabel waarbij er een Id word gekoppeld aan deze records. Het voorbeeld:
attachment.php

De omlijste records is dus een toevoeging door de querie, deze records horen bij elkaar een andere querie haalt dit eruit door de gemeenschappelijke 3.

Nu is het probleem als ik een wijziging doe in deze bij elkaar horende records dan voegt hij ze eronder toe. Dus dan krijg ik nog zo'n samenvoeging hij kijkt dan niet of deze al bestaat.
Is dit mogelijk ? Dat als ik een wijziging doe in bijvoorbeeld records horende bij 3, dat hij ze dan update als het ware. Als er een paar records erbij gekomen zijn deze update of als er een paar zijn verwijderd hij deze eruit haald horende alleen bij 3.

Deze sql gebruik ik op dit moment, er worden aardig wat gegevens weg geschreven. Misschien net optimaal misschien pas ik dit aan naar alleen id's.
INSERT INTO Test ( IDactiviteit, Activiteit, Categorie, ActiviteitAanUit, RisicoID, [Risico's], Oorzaak, Gevolg, QuerieRisicosAan_K, QuerieRisicosAan_G, QuerieRisicosAan_T, QuerieRisicosAan_Q, QuerieRisicosAan_O, QuerieRisicosAan_Score, ActiviteitID, RisicosAanUit, IDMaatregel, Maatregel, QuerieMaatregelAan_K, QuerieMaatregelAan_G, QuerieMaatregelAan_T, QuerieMaatregelAan_Q, QuerieMaatregelAan_O, QuerieMaatregelAan_Score, Eigenaar, Refrentiedocument, IDRisico, MaatregelAanUit, WerkpakketID )
SELECT QuerieTotaalAan.IDactiviteit, QuerieTotaalAan.Activiteit, QuerieTotaalAan.Categorie, QuerieTotaalAan.ActiviteitAanUit, QuerieTotaalAan.RisicoID, QuerieTotaalAan.[Risico's], QuerieTotaalAan.Oorzaak, QuerieTotaalAan.Gevolg, QuerieTotaalAan.QuerieRisicosAan.K, QuerieTotaalAan.QuerieRisicosAan.G, QuerieTotaalAan.QuerieRisicosAan.T, QuerieTotaalAan.QuerieRisicosAan.Q, QuerieTotaalAan.QuerieRisicosAan.O, QuerieTotaalAan.QuerieRisicosAan.Score, QuerieTotaalAan.ActiviteitID, QuerieTotaalAan.RisicosAanUit, QuerieTotaalAan.IDMaatregel, QuerieTotaalAan.Maatregel, QuerieTotaalAan.QuerieMaatregelAan.K, QuerieTotaalAan.QuerieMaatregelAan.G, QuerieTotaalAan.QuerieMaatregelAan.T, QuerieTotaalAan.QuerieMaatregelAan.Q, QuerieTotaalAan.QuerieMaatregelAan.O, QuerieTotaalAan.QuerieMaatregelAan.Score, QuerieTotaalAan.Eigenaar, QuerieTotaalAan.Refrentiedocument, QuerieTotaalAan.IDRisico, QuerieTotaalAan.MaatregelAanUit, [Forms]![Werkpaketten]![WerkpakketID] AS Expr1
FROM QuerieTotaalAan;
 

Bijlagen

  • Voorbeeld.jpg
    Voorbeeld.jpg
    99,5 KB · Weergaven: 77
Laatst bewerkt:
Kun je niet filteren op WerkpakketID? Ik neem aan, dat die bepaald wordt op het formulier?
 
Ik heb 3 hele grote tabellen die ergens anders vandaan komen.
Nu geef ik met een voorselectie, een x aantal forms die vragen waar een vinkje moet en de keuze steeds kleiner word.
Een querie die kijkt welke vinkjes aan staan kopieerd deze gegevens naar deze tabel waarna deze tabel er een werkpakketId aan hangt.

Maar als ik nu bewerking wil doen dan kopieerd hij voor dit werkpakketid hem er gewoon onder, ik zou willen dat hij voor dit werkpakketID hem eroverheen kopieerd toevoegd en of verwijderd.

Er bestaan meerdere werkpakketID's dus dat gegevens dubbelstaan is geen probleem als er maar word gekoppeld aan dat werkpakketID. Bij een bewerking van het werkpakketID filter ik dus dat Id eruit en kan ik de gegevens aanpassen. Hmm misschien heb je wel gelijk haha, maar hoe kan ik dan kijken of deze gegevens al bestaan ? Dat hij ze da nniet extra toevoegd maar eroverheen schrijft ? en update waar nodig ?

Gr !
 
Om alleen nieuwe gegevens toe te voegen kun je een WHERE NOT EXIST of een WHERE NOT IN constructie gebruiken.
Dat doe je rechtstreeks in je SQL statement (query openen -> SQL weergave).

Dus zoiets

INSERT INTO tabel1 (kolom1, kolom2, kolom3)
SELECT kolom1, kolom2, kolom3
FROM tabel2
WHERE NOT EXISTS
(
SELECT tabel1_1.*
FROM tabel1 AS tabel1_1
WHERE tabel2.kolom1 = tabel1_1
)

Tardis
 
Duidelijk, ik zat ff te kjiken.

Nu is het bij mji zo dat in de querietotaal aan eigenlijk activiteitID, risicoId en MaatregelId niet in dezelfde volgorde in 1 record mogen terugkomen.
Dus:
1 - 3 - 4
1 - 4 - 4

Dus 1 - 4 - 4 Mag dus niet nog eens toegevoegd worden.

Where not exists
(SELECT * FROM querietotaal WHERE ActiviteitID.querietotaal = ActiviteitID.opslagtabel) AND (SELECT * FROM querietotaal WHERE Risico.querietotaal = Risico.opslagtabel) AND (SELECT * FROM querietotaal WHERE MaatregelID.querietotaal = MaatregelID.opslagtabel)

Volgens mij werkt dit niet omdat de 3 ID's in 1 record staan ? hij moet dus kijken of die volgorde niet bestaat is dit mogelijk?

Super bedankt.

gr, Ronald
 
Allereerst is je WHERE clause verkeerd.
Moet zijn

Code:
Where not exists
(
SELECT * 
FROM querietotaal
WHERE ActiviteitID.querietotaal = ActiviteitID.opslagtabel
AND RisicoID.querietotaal = RisicoID.opslagtabel
AND MaatregelID.querietotaal = MaatregelID.opslagtabel
)

Mbt je vraag, probeer dit eens

Code:
Where not exists
(
SELECT * 
FROM querietotaal
WHERE ActiviteitID.querietotaal  & RisicoID.querietotaal &  MaatregelID.querietotaal =
ActiviteitID.opslagtabel & RisicoID.opslagtabel & MaatregelID.opslagtabel
)

Tardis
 
Hij blijft ze gewoon toevoegen. Hij vraagt ook om een parameter in te voeren. Test.IDactiviteit en de andere 2.
Deze moet die uit de tabel test halen hierin slaat hij alle gegevens op, de verwijzing is volgens mij goed.

Ik heb een bijlagen toegevoegd met een gedeelte van de database, de koppeling naar de werkpakketten heb ik eruit gehaald.
Als ik op de toevoegquerie druk zou ik willen dat hij de gegevens van de querietotaalaan update naar de tabel test.
En hij gegevens daar update delete of aanpast zodat ze kloppen met de querietotaalaan. Is dit mogelijk ?

WHERE not exists
(
SELECT *
FROM Querietotaalaan
WHERE Querietotaalaan.IDactiviteit & Querietotaalaan.RisicoID & Querietotaalaan.IDMaatregel =
Test.IDactiviteit & Test.RisicoID & Test.IDmaatregel
);

Kheb een nieuw topic gemaakt, omdat de vraagt niet echt meer klopt.
Ik hoop dat dat verhaaltje het wat duidelijker maakt, bedankt alvast voor de info Tardis en Octafish !
http://www.helpmij.nl/forum/showthread.php/533283-Toevoeg-verwijderd-update-Query
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan