login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > PHP & SQL

eerste resultaat van een SQL update

wickedsid – 14/06/2011 11:54 (Laatst gewijzigd op 14/06/2011 11:55)
beste

ik heb een sql update geschreven.
heel eenvoudig.
update tabel1
set kolom1 =
(select kolom2
from tabel2
where kolom4 like '%x')

nu krijg ik bij het result van mijn subselect voor sommige records meerdere waardes terug.
als ik dan die subselect alleen uitvoer met wat meer kolommen om te zien wat het resultaat is, is dit het volgende:
kolom4 kolom2
heuvelstraat 5
heuvelstraat 6
heuvelstraat 7

ik MOET mijn subselect maken met kolom4 in de where waardoor ik dus meerdere resultaten in mijn select ga krijgen (ik gebruik een like) maar het is voldoende als ik het EERSTE resultaat zou krijgen.
dus de "5" in dit geval.

is dit mogelijk? heb al met FIRST en LIMIT geprobeerd, maar dat leverde niets op.

Bedankt!

8 antwoorden

Gesponsorde links
Daisycon - Verdien geld met uw website

Wim – 14/06/2011 12:43
LIMIT 1 zou gewoon moeten werken hoor...

laat eens even wat code zien hoe je de limit geprobeerd hebt

wickedsid – 14/06/2011 12:45
ja ik ben misschien niet heel duidelijk geweest.
de update die ik doe gaat over enkele honderden records.
Dus erboven, eronder en ertussen staan andere records...
daarom dat de limit niet werkt.

excuses!
toch bedankt!

Stijn – 14/06/2011 13:38
Je zal die WHERE clause moeten uitbreiden zodat je toch maar één resultaat oplevert. Kan je niet werken met de primary key ipv die column4?

wickedsid – 14/06/2011 15:00
dat is het probleem.
het zijn 2 totaal verschillende tabellen die ik combineer. en de enigste overeenkomst is die straatnaam.
doeme... geen oplossing hiervoor dus? 

betterdays – 15/06/2011 12:21
wickedsid schreef:
dat is het probleem.
het zijn 2 totaal verschillende tabellen die ik combineer. en de enigste overeenkomst is die straatnaam.
doeme... geen oplossing hiervoor dus? 


LIMIT 1 zou wel moeten werken hoor. Maar heb je geen code zodat we eens goed kunnen kijken 

wickedsid – 15/06/2011 12:33
  1. UPDATE rp
  2. SET geom = (
  3. SELECT a.geom
  4. FROM crb.vw_qhnr a, rp b
  5. WHERE a.adres LIKE %b.adres_meld%
  6. )



dit zou mijn update query zijn.
Maar als ik de subselect run:

  1. SELECT a.geom, a.adres, b.adres_meld
  2. FROM crb.vw_qhnr a, rp b
  3. WHERE a.adres LIKE %b.adres_meld%


Dan krijg ik dus iets in de aard van
1 aaaa aaaa
2 bbbb bbbb
3 bbbb bbbb
4 bbbb bbbb
5 cccc cccc

en dan moet ik gewoon de eerste waarde hebben waar het bbbb is...

ArieMedia – 15/06/2011 15:15
Misschien is distinct een oplossing

wickedsid – 15/06/2011 18:52
nee want een distinct zou als volgt zijn:
[code=sql]
UPDATE rpSET geom = (SELECT distinct(a.geom) FROM crb.vw_qhnr a, rp b WHERE a.adres LIKE %b.adres_meld%)
[\code]
en dat is het niet, want die geom IS altijd veranderend.
ik moet de 2 of 3 of 4 hebben, niet de bbbb.
de waarde die bij bbbb hoort dus...

Gesponsorde links

Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten:

© 2002-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.041s