hoi iedereen,

het idee is vrij eenvoudig, de oplossing misschien niet. in mijn webshop bevatten de productnamen niet de merknaam. zo zal een sony 42" lcd tv op de site verschijnen als 42" lcd tv en onder merk staat dan ergens sony. nu zou ik mijn volledige database willen aanpassen zodat ook de merknaam in de productnaam voorkomt (beter voor seo en mooier op de site ook).

ik heb even in de database gekeken en er zijn drie tabellen mee gemoeid:

products_description: bevat products_id en products_name
manufacturers: bevat manufacturers_id en manufacturers_name
products: bevat products_id en manufacturers_id

voorbeeld: product 15 met naam 42" lcd tv heeft manufacturer 3 met naam sony. de products_name van alle producten zou nu aangepast moeten worden naar een concatenatie van de manufacturers_name en de huidige products_name.

kan iemand hiervoor een query maken?

grtz,
stein
dus ik pas het beter overal op de site aan dat eerst de merknaam geprint wordt en dan de productnaam?
Stein de sutter op 02/12/2011 08:43:49

dus ik pas het beter overal op de site aan dat eerst de merknaam geprint wordt en dan de productnaam?

Ik neem aan dat het tonen van producten via één script gaat, dus dat lijkt mij inderdaad de beste optie.
waarom is het eigenlijk zo onverstandig?
Dat heeft te maken met database consistentie. Stel dat een merk besluit de merknaam aan te passen, als je het gescheiden houdt hoef je maar één record in de manufacturers tabel aan te passen en wordt dit automatisch overal doorgevoerd. Als je de merknaam toevoegt aan de producten tabel moet je ook nog eens de proucten tabel aanpassen met een grote kans op fouten.
Meest logische lijkt mij om een view te bouwen zodat je een virtuele tabel krijgt met de data zoals jij het wilt hebben, maar dan zonder dubbele data in je database.

CREATE VIEW v_products AS
SELECT p.products_id, CONCAT(m.manufacturers_name, ' ', prd.products_name)
FROM products_description prd
JOIN manufacturers m ON m.manufacturers_id = p.manufacturers_id
JOIN products p ON p.products_id = prd.products_id

Als je dan de volledige naam van het product wil hebben doe je simpelweg:
SELECT *
FROM v_products
WHERE products_id = 12345

Als nu ergens de naam van een producent wijzigt, wijzigt het automatisch mee in je view.

Reageren