login  Naam:   Wachtwoord: 
Registreer je!
 Forum

eerste resultaat van een SQL update

Offline wickedsid - 14/06/2011 11:54 (laatste wijziging 14/06/2011 11:55)
Avatar van wickedsidLid 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
Offline Wim - 14/06/2011 12:43
Avatar van Wim Crew algemeen LIMIT 1 zou gewoon moeten werken hoor...

laat eens even wat code zien hoe je de limit geprobeerd hebt
Offline wickedsid - 14/06/2011 12:45
Avatar van wickedsid Lid 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!
Offline Stijn - 14/06/2011 13:38
Avatar van Stijn PHP expert 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?
Offline wickedsid - 14/06/2011 15:00
Avatar van wickedsid Lid 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? 
Offline betterdays - 15/06/2011 12:21
Avatar van betterdays Lid
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 
Offline wickedsid - 15/06/2011 12:33
Avatar van wickedsid Lid
  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...
Offline ArieMedia - 15/06/2011 15:15
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Misschien is distinct een oplossing
Offline wickedsid - 15/06/2011 18:52
Avatar van wickedsid Lid 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-2024 Sitemasters.be - Regels - Laadtijd: 0.17s