SQL opdracht om gegevens te plaatsen.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Gnitnel
  • Registratie: December 2021
  • Laatst online: 31-12-2021
Hallo,

Ik ben al geruime tijd bezig met het uitdokteren van een script om in mijn Prestashop-database iets aan te passen.
Mijn kennis is blijkbaar wat te weinig om het voor elkaar te krijgen.

Wat ik graag wil is het volgende:

In het tabel "ps_lgcomments_productcomments" is een kolom "nick" met als type "varchar(255)" en als collatie "utf8_general_ci"
In dat zelfde tabel is ook een kolom "id_customer"

Die kolom "nick" moet gevuld worden met de tabel "firstname" van de klant die het zelfde nummer heeft als "id_customer" uit het tabel "ps_customer".

Kan iemand mij hier mee helpen?
Op dit moment heb ik wel de product- en winkelbeoordelingen in mijn winkel staan, maar allemaal hebben ze als klantnaam "Anonymous".


Hoe het er uit moet zien in mijn optiek:
1) zoek in "ps_lgcomments_productcomments" de data van "id_customer"
2) zoek in "ps_customer" de juiste "id_customer" en gebruik de data in die regel van "firstname"
3) importeer deze "firstname"-data in de regel van "nick" in "ps_lgcomments_productcomments"

Beste antwoord (via Gnitnel op 31-12-2021 12:30)


  • Hydra
  • Registratie: September 2000
  • Laatst online: 12-05 15:52
Iets als (uit het hoofd):

UPDATE ps_lgcomments_productcomments pc SET pc.nick = (SELECT c.firstname FROM ps_customer c WHERE c. id_customer = pc. id_customer)

Zou moeten kunnen. Beetje afhankelijk van of de onderliggende database subqueries in updates ondersteunt.

Test het wel eerst ff in een back-up. Bovenstaande query overschrijft ALLE nick waarden in ps_lgcomments_productcomments.

[ Voor 18% gewijzigd door Hydra op 31-12-2021 12:19 ]

https://niels.nu

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 12-05 15:52
Iets als (uit het hoofd):

UPDATE ps_lgcomments_productcomments pc SET pc.nick = (SELECT c.firstname FROM ps_customer c WHERE c. id_customer = pc. id_customer)

Zou moeten kunnen. Beetje afhankelijk van of de onderliggende database subqueries in updates ondersteunt.

Test het wel eerst ff in een back-up. Bovenstaande query overschrijft ALLE nick waarden in ps_lgcomments_productcomments.

[ Voor 18% gewijzigd door Hydra op 31-12-2021 12:19 ]

https://niels.nu


Acties:
  • +1 Henk 'm!

  • Gnitnel
  • Registratie: December 2021
  • Laatst online: 31-12-2021
Wow! Snel! meteen uitproberen op de test-omgeving.
Dank alvast!

Acties:
  • +1 Henk 'm!

  • Gnitnel
  • Registratie: December 2021
  • Laatst online: 31-12-2021
Worked like a charm!
Echt heel erg bedankt, dit had ik echt nooit voor elkaar gekregen met mijn basic-sql kennis.

Acties:
  • 0 Henk 'm!

  • DHH
  • Registratie: Augustus 2014
  • Laatst online: 07-09-2024

DHH

Misschien ook goed om even na te denken hoe om te gaan met toekomstige comments, want de voorgestelde 'UPDATE' werkt alleen wanneer je deze uitvoert en nieuwe comments houden waarschijnlijk nog steeds een lege 'nick'.

Je kan overwegen om de query die je webshop gebruikt te herchrijven naar:
code:
1
2
3
SELECT pc.<columns die je nodig hebt>, c.firstname
FROM ps_lgcomments_productcomments as pc
LEFT JOIN ps_customer as c on pc.id_customer  = c.id_customer


Hierdoor hoef je 'nick' in ps_lgcomments_productcomments helemaal niet meer te gebruiken en heeft als voordeel dat de naam bij je comment altijd bijgewerkt is, ook als de klant zijn gegevens verandert.

INNER JOIN werkt overigens ook, mits elke comment een (geldige) id_customer heeft, dus niet gebruiken als je anomiem commenten mogelijk is.

[ Voor 10% gewijzigd door DHH op 01-01-2022 15:19 ]