Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

MySQL update vraag

Annie
11 antwoorden
  • Hallo beste programmeurs, ik heb een probleempje met sql dat me net iets boven de pet gaat.

    De situatie is als volgt. Op mijn site bied ik verschillende fotoseries aan. Bijvoorbeeld fotos van een feest In Qontrol, die staan in de map 06_04_15_inqontrol. SAmen met nog meer fotoseries stond deze in de map fotos. Alleen werden het wat teveel series van verschillende jaren dus heb ik nu alles in jaarmapjes gemaakt. dus een speciale map voor 2005, 2006 etc. Alleen konden bezoekers reacties plaatsen bij fotos, die werden aan de hand van de paginanaam opgehaald en getoond. Nu ik dus de fotoseries in mapjes heb geplaatst zijn deze paginanamen dus veranderd. het is dus niet meer fotos/06_04_15_inqontrol, maar het fotos/2006/06_04_15_inqontrol geworden. Op de database moet dus een update gedraaid worden die dit doorvoert, dus de paginanamen update.

    [b:6a0b1d6372]kort gezegd alle paginanamen die beginnen met 'fotos/06' moeten voortaan beginnen met 'fotos/2006/06'[/b:6a0b1d6372]

    Dit is alleen net iets te geavanceerd voor mij dus ik roep jullie hulp in.
    Ik weet dat de query iets moet worden in de trant van

    UPDATE reacties SET pagina = fotos/2006/06% WHERE pagina = fotos/06%

    dit werkt uiteraard niet, wie weet hoe ik dit wel werkend kan maken (met behulp van LIKE waarschijnlijk?)


    alvast bedankt!
  • [quote:d309922317=""G""]UPDATE reacties SET pagina = fotos/2006/06% WHERE pagina = fotos/06%

    dit werkt uiteraard niet,[/quote:d309922317]

    Waarom niet?
  • Nou omdat er volgens mij nog een LIKE ergens moet en een aantal komma's… en durf het ook niet zomaar te testen op de db
  • [quote:cc00e42abd=""G""]Nou omdat er volgens mij nog een LIKE ergens moet en een aantal komma's… en durf het ook niet zomaar te testen op de db[/quote:cc00e42abd]

    Misschien gewoon ff een test tabelletje maken en proberen? Volgens mij kan het gewoon zo:

    [code:1:cc00e42abd]UPDATE reacties SET pagina = 'fotos/2006/06' WHERE pagina = 'fotos/06'[/code:1:cc00e42abd]

    – Daan
  • nee, nu wordt alleen de pagina die 'fotos/06' heet geupdate. Maar alle paginas die beginnen met 'fotos/06' moeten worden geupdate.

    Het is iets als
    UPDATE reacties SET pagina = 'fotos/2006/06' WHERE pagina LIKE 'fotos/06%'
    Maar als ie nou 'fotos/06bla' heet heet ie na de update 'fotos/2006/06' en ik denk dat je dan wilt dat die ''fotos/2006/06bla' heet. Je moet iets doen met regex (mits je SQLserver dat ondersteunt), maar ik weet daar verder te weinig vanaf.
  • Het is iets als

    [quote:b01dfea920]UPDATE reacties SET pagina = "fotos/2006/06"
    WHERE pagina .id IN
    (SELECT pagina .id
    FROM reacties
    WHERE pagina Like "fotos/06%");[/quote:b01dfea920]

    Maar dan noemt ie alle foto's hetzelfde (fotos/2006/06)… :cry:
    Het laatste gedeelte moet dus even geparkeerd worden.

    Het zal vast kunnen maar daar moet ik morgen maar even naar kijken, het is me nu te laat :D
  • Met wat creatief knippen en plakken met strings kom je een heel eind:
    [code:1:90d4cb1839]
    UPDATE reacties
    SET pagina =
    CONCAT(
    LEFT(pagina, INSTR(pagina, 'fotos/') + 5 ) ,
    '20' ,
    MID(pagina, INSTR(pagina, 'fotos/') + 6, 2) ,
    '/' ,
    RIGHT(pagina, LENGTH(pagina) - INSTR(pagina, 'fotos/') - 5)
    )
    [/code:1:90d4cb1839]
  • tja, je moet de functies maar kennen.
    Misschien is het leuk om de functies iets uit te leggen want met Google kom ik niet ver :cry:
  • Kijk hier eens: http://www.semeleer.nl/tut_sql.html
  • [quote:312be1d18b="marientje"]tja, je moet de functies maar kennen.
    Misschien is het leuk om de functies iets uit te leggen want met Google kom ik niet ver :cry:[/quote:312be1d18b]
    Staat gewoon in de manual van MySQL.
  • Het is gelukt hoor!

    Dit was de query:

    UPDATE reacties SET pagina = replace(pagina, '/fotos/06', '/fotos/2006/06') WHERE pagina like '/fotos/06%';

    tnx voor de hulp

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.