Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: zoek query oplossing  (gelezen 6142 keer)

0 leden en 1 gast bekijken dit topic.

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
zoek query oplossing
« Gepost op: 19 augustus 2010, 15:48:17 »
Hey mensen,

ik wil 't volgende:
vanuit een veld in een tabel een ander veld in een tabel updaten waarin
records overeenkomstig zijn in de andere velden.
concreet:
insert into productinfo.voorraad select producttemp.voorraad where producttemp(product.scannr) = productinfo(product.scannr);

dit werkt echter niet, iemand een hint?

Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline toonkint

  • Ervaren lid
  • ***
  • Berichten: 363
  • Oplossing.be
Re: zoek query oplossing
« Reactie #1 Gepost op: 19 augustus 2010, 16:09:38 »
waarom gebruik je een 'INSERT'-statement om iets te updaten? Normaliter zou ik hiervoor een 'UPDATE'-statement maken.
Windows 7 Professional Unknow NLD
Intel(R) Core(TM) i5 CPU         661  @ 3.33GHz 1166
DP55WG
NVIDIA Quadro FX 380 256MB 1920 x 1080
Realtek High Definition Audio
Nr: 1 Model: Volume0 (2 * 2 TB RAID 1)
C:\ NTFS 1.862,91GB 1.832,26GB 8.183MB
Mozilla Firefox, Thunderbird

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: zoek query oplossing
« Reactie #2 Gepost op: 19 augustus 2010, 16:55:17 »
probeer het met een update, maar lukt nog niet,
Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline toonkint

  • Ervaren lid
  • ***
  • Berichten: 363
  • Oplossing.be
Re: zoek query oplossing
« Reactie #3 Gepost op: 19 augustus 2010, 17:16:40 »
kun je anders eens zeggen wat je query juist moet doen?
want zoals ik ze zie kan ze gewoonweg niet werken, en ik zie ook niet wat je juist probeert te doen.
Windows 7 Professional Unknow NLD
Intel(R) Core(TM) i5 CPU         661  @ 3.33GHz 1166
DP55WG
NVIDIA Quadro FX 380 256MB 1920 x 1080
Realtek High Definition Audio
Nr: 1 Model: Volume0 (2 * 2 TB RAID 1)
C:\ NTFS 1.862,91GB 1.832,26GB 8.183MB
Mozilla Firefox, Thunderbird

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: zoek query oplossing
« Reactie #4 Gepost op: 20 augustus 2010, 22:58:18 »
wat de query doen moet: een veld updaten in tabel Y volgens de waarden van een veld in tabel X, waarvan de id dezelfde is in de 2 tabellen.

bijv. tabel X bestaat uit: veld productId en veld aantal.
tabel Y bestaat uit: veld productId (gelijkaardig aan tabel Y) en veld voorraad.
concreet: tabel X
               productId 1 , aantal: 0
               productId 2, aantal: 2
tabel Y
productId 1, voorraad: 2
productId 2, voorraad: 0

de query moet 't volgende resultaat geven in tabel Y:
product1, voorraad:2
product 2, voorraad:2
Dus hij moet de waarden van tabel X voor veld aantal overbrengen naar tabel Y veld voorraad inzoverre ze groter zijn dan 0

Hopelijk verduidelijkt dit mijn vraag.

Grt. Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: zoek query oplossing
« Reactie #5 Gepost op: 21 augustus 2010, 09:07:40 »
Probeer deze query eens? Ik heb ze getest onder MySQL

UPDATE y set voorraad = (

SELECT

CASE
WHEN x.aantal > 0 THEN x.aantal
ELSE y.voorraad
END

FROM x
WHERE x.productId = y.productId
)

Offline toonkint

  • Ervaren lid
  • ***
  • Berichten: 363
  • Oplossing.be
Re: zoek query oplossing
« Reactie #6 Gepost op: 21 augustus 2010, 10:14:09 »
Firebirdy is mij voor.
Zijn oplossing lijkt mij inderdaad de beste (en de correcte) te zijn.
Windows 7 Professional Unknow NLD
Intel(R) Core(TM) i5 CPU         661  @ 3.33GHz 1166
DP55WG
NVIDIA Quadro FX 380 256MB 1920 x 1080
Realtek High Definition Audio
Nr: 1 Model: Volume0 (2 * 2 TB RAID 1)
C:\ NTFS 1.862,91GB 1.832,26GB 8.183MB
Mozilla Firefox, Thunderbird

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: zoek query oplossing
« Reactie #7 Gepost op: 21 augustus 2010, 10:31:48 »
Bedankt,

en moet dit dan in vba?


M.
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline toonkint

  • Ervaren lid
  • ***
  • Berichten: 363
  • Oplossing.be
Re: zoek query oplossing
« Reactie #8 Gepost op: 21 augustus 2010, 10:37:36 »
deze oplossing is de SQL-code, ze moet dus jouw SQL-code vervangen.
Windows 7 Professional Unknow NLD
Intel(R) Core(TM) i5 CPU         661  @ 3.33GHz 1166
DP55WG
NVIDIA Quadro FX 380 256MB 1920 x 1080
Realtek High Definition Audio
Nr: 1 Model: Volume0 (2 * 2 TB RAID 1)
C:\ NTFS 1.862,91GB 1.832,26GB 8.183MB
Mozilla Firefox, Thunderbird

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: zoek query oplossing
« Reactie #9 Gepost op: 21 augustus 2010, 14:38:11 »
Probeerde het uit, maar werkt niet.
Snap de syntaxis ook niet.
query is volgende:

Update ProductInfo set ProductInfo.voorraad = ( Select Case when ProductTemp.SomVanVeld2 > 0 then Producttemp.SomVanVeld2 Else ProductInfo.voorraad = ProductTemp.SomVanVeld2  end from ProductTemp);

Neemt die query een loop doorheen de tabellen?
Betwijfel dit... maar ben dan ook geen specialist ;)

Nog verdere suggesties ?
Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline toonkint

  • Ervaren lid
  • ***
  • Berichten: 363
  • Oplossing.be
Re: zoek query oplossing
« Reactie #10 Gepost op: 21 augustus 2010, 15:50:47 »
Update ProductInfo set ProductInfo.voorraad = ( Select Case when ProductTemp.SomVanVeld2 > 0 then Producttemp.SomVanVeld2 Else ProductInfo.voorraad = ProductTemp.SomVanVeld2  end from ProductTemp);
Er zit nog een fout in je 'else-statement' in de 'case'.
Er wordt trouwens ook nergens een ID vergeleken (laatste WHERE-statement).

Volgens mij is juist:
UPDATE ProductInfo SET ProductInfo.voorraad =
(SELECT CASE WHEN ProductTemp.SomVanVeld2 > 0
THEN Producttemp.SomVanVeld2
ELSE ProductInfo.voorraad
END
FROM ProductTemp
WHERE ProductTemp.productID = ProductInfo.productID)

best kijk je wel nog eens na of mijn veld/tabel-namen kloppen (alsook de hoofdletters).

Wat doet deze query nu?
Hij doorloopt rij per rij de tabel 'ProductInfo'. Per rij zal hij het veld 'voorraad' veranderen. Hiervoor zoekt hij in de tabel 'ProductTemp' het product met hetzelfde 'productID'. Als hierin het veld 'SomVanVeld2' groter is dan 0 zal hij dit getal in het veld 'voorraad' schrijven. Is dit niet het geval zal hij het getal uit 'voorraad' naar 'voorraad' wegschrijven (theoretisch, in de praktijk laat hij het dus gewoon staan).

Succes!

Toon
Windows 7 Professional Unknow NLD
Intel(R) Core(TM) i5 CPU         661  @ 3.33GHz 1166
DP55WG
NVIDIA Quadro FX 380 256MB 1920 x 1080
Realtek High Definition Audio
Nr: 1 Model: Volume0 (2 * 2 TB RAID 1)
C:\ NTFS 1.862,91GB 1.832,26GB 8.183MB
Mozilla Firefox, Thunderbird

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: zoek query oplossing
« Reactie #11 Gepost op: 21 augustus 2010, 18:42:38 »
Blijf proberen, maar
MS Access heeft een syntaxisfout aan. Keek alle velden en tabelnamen na, deze kloppen.
Syntaxisfout in queryexpressie: SELECT CASE WHEN ProductTemp.SomVanVeld2 > 0
THEN ProductTemp.SomVanVeld2
ELSE Productinfo.Voorraad
END
FROM ProductTemp
WHERE ProductTemp.ProductId = Productinfo.ProductId)

Een hint?

M.
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: zoek query oplossing
« Reactie #12 Gepost op: 21 augustus 2010, 19:42:02 »
Je hebt gelijk Maurann,

het bovenstaande is standaard SQL (SQL-92) en zou moeten werken.

Niet met Access dus ::).

Probeer anders even het volgende?

UPDATE productinfo INNER JOIN Producttemp ON productinfo.productID = Producttemp.productID SET productinfo.voorraad = producttemp.somvanveld2 where producttemp.somvanveld2 > 0

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: zoek query oplossing
« Reactie #13 Gepost op: 21 augustus 2010, 22:42:25 »
TXS GUYS!  Het werkt opnieuw dankzij dit forum!

 :)


Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

 


www.combell.com