|
Categorieën >
PHP & SQL
eerste resultaat van een SQL update
wickedsid – 14/06/2011 11:54 (Laatst gewijzigd op 14/06/2011 11:55)
|
|
offline
|
Lid
|
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
Wim – 14/06/2011 12:43
|
|
offline
|
Crew algemeen
|
LIMIT 1 zou gewoon moeten werken hoor...
laat eens even wat code zien hoe je de limit geprobeerd hebt
|
|
|
|
offline
|
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
|
Content Manager
|
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
|
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?
|
|
|
|
online
|
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
|
Lid
|
update rp
set geom = (
select a.geom
from crb.vw_qhnr a, rp b
where a.adres like %b.adres_meld%
)
UPDATE rp SET geom = ( SELECT a.geom FROM crb.vw_qhnr a, rp b WHERE a.adres LIKE %b.adres_meld% )
dit zou mijn update query zijn.
Maar als ik de subselect run:
select a.geom, a.adres, b.adres_meld
from crb.vw_qhnr a, rp b
where a.adres like %b.adres_meld%
SELECT a.geom, a.adres, b.adres_meld FROM crb.vw_qhnr a, rp b 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
|

PHP ver gevorderde
|
Misschien is distinct een oplossing
|
|
|
|
offline
|
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...
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|