Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UPDATE - złożone zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
dziolecki
Witam, potrzebuję wykonać złożone zapytanie do bazy danych.
Poniżej przedstawiam sytuację.

Moja baza danych prezentuje się tak:

products_description:
  1. +------------+---------------+
  2. | products_id| products_name |
  3. +------------+---------------+
  4. | 5 | Regał A |
  5. | 6 | Regał B |
  6. +------------+---------------+
  7.  


products_to_categories:
  1. +------------+---------------+
  2. | products_id| categories_id |
  3. +------------+---------------+
  4. | 5 | 2 |
  5. | 6 | 3 |
  6. +------------+---------------+


Chcę masowo zmienić kategorie wszystkich produktów, które w nazwię w tabeli products_description mają "Regał", czyli zmienić ich kategorie w bazie tabeli products_to_categories na categories_id = 46.

  1. UPDATE `products_to_categories` SET categories_id = 46 WHERE ....
?
Jakieś wskazówki?

Pozdrawiam
trueblue
Wskazówka: Google
http://stackoverflow.com/questions/9957171...pdate-statement
dziolecki
Idąc tym tropem, napisałem coś takiego
  1. UPDATE products_to_categories JOIN products_description ON products_to_categories.products_id = products_description.products_id
  2. SET products_to_categories.categories_id = 46
  3. WHERE products_description.products_name LIKE 'Regał%'


Zwraca mi błąd: #1062 - Duplicate entry '408-46' for key 'PRIMARY'
trueblue
Co oznacza, że po aktualizacji miałbyś dwa te same produkty przypisane do tej samej kategorii, a na tych dwóch polach jest założony indeks unikalny.
UPDATE IGNORE, a potem te, które nie zostały zaktualizowane (z id=46) trzeba wyrzucić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.