Jak znaleźć produkty bez zdjęć, opisu albo EAN w PrestaShop (zapytania SQL)

5 min czytania Inne języki: EN FR

Katalog z kilkuset produktami da się pilnować ręcznie. Przy kilku tysiącach, do tego kombinacjach i importach od dostawców, pojawiają się braki, których nikt nie widzi w panelu: produkt z jednym zdjęciem, opis na dwie linijki, rozmiar bez kodu kreskowego, pusta marka. Poniżej gotowe zapytania SQL, które wypisują każdy rodzaj braku – wiesz dokładnie, co poprawić i w jakiej kolejności.

Zanim zaczniesz

  • Wszystkie zapytania tylko odczytują dane (SELECT). Uruchomisz je w phpMyAdmin, Adminerze albo dowolnym kliencie MySQL.
  • Zamień prefiks ps_ na prefiks swoich tabel.
  • id_lang = 1 i id_shop = 1 to domyślny język i sklep – zmień, jeśli u Ciebie są inne (sprawdzisz w ps_lang i ps_shop).
  • Większość zapytań ma warunek p.active = 1. Usuń go, żeby sprawdzić też produkty jeszcze nieopublikowane – dobry nawyk przed ich włączeniem.

1. Produkty bez marki

Google potrzebuje marki prawie dla każdego produktu, a klienci po niej filtrują. W PrestaShop marka to manufacturer (producent).

SELECT p.id_product, p.reference, pl.name
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
  AND p.id_manufacturer = 0;

2. Produkty z mniej niż 3 zdjęciami

Jedno zdjęcie rzadko sprzedaje. Zmień 3 na swoje minimum.

SELECT p.id_product, pl.name, COUNT(i.id_image) AS zdjecia
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
LEFT JOIN ps_image i ON i.id_product = p.id_product
WHERE p.active = 1
GROUP BY p.id_product, pl.name
HAVING zdjecia < 3
ORDER BY zdjecia, p.id_product;

3. Krótkie albo puste opisy

Zapytanie usuwa znaczniki HTML i liczy pozostałe znaki. Wymaga MySQL 8 albo MariaDB 10.0.5+ (REGEXP_REPLACE).

SELECT p.id_product, pl.name,
       CHAR_LENGTH(TRIM(REGEXP_REPLACE(COALESCE(pl.description, ''), '<[^>]*>', ''))) AS znaki
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
HAVING znaki < 300
ORDER BY znaki;

Uruchom je dla każdego języka (id_lang). Nieprzetłumaczone opisy to częsty ukryty brak w sklepach wielojęzycznych.

4. Produkty i kombinacje bez EAN

-- produkty proste
SELECT p.id_product, pl.name
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
  AND NOT EXISTS (SELECT 1 FROM ps_product_attribute pa WHERE pa.id_product = p.id_product)
  AND COALESCE(p.ean13, '') = '';

-- kombinacje
SELECT p.id_product, pl.name, pa.id_product_attribute, pa.reference
FROM ps_product_attribute pa
JOIN ps_product p ON p.id_product = pa.id_product
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
  AND COALESCE(pa.ean13, '') = '';

Więcej o GTIN i Google Merchant Center: Jak znaleźć wszystkie produkty bez GTIN w PrestaShop.

5. Kombinacje bez przypisanego zdjęcia

Gdy klient wybiera „czerwony”, zdjęcie powinno zmienić się na czerwone. Działa to tylko wtedy, gdy zdjęcia są przypisane do kombinacji.

SELECT p.id_product, pl.name, pa.id_product_attribute, pa.reference
FROM ps_product_attribute pa
JOIN ps_product p ON p.id_product = pa.id_product
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
LEFT JOIN ps_product_attribute_image pai
  ON pai.id_product_attribute = pa.id_product_attribute
WHERE p.active = 1
  AND pai.id_image IS NULL;

Uwaga: jeśli sklep rozróżnia tylko rozmiary, brak zdjęć kombinacji może być w porządku. Liczy się to głównie przy kolorach i materiałach.

6. Brak na stanie

SELECT p.id_product, pl.name, sa.id_product_attribute, sa.quantity
FROM ps_stock_available sa
JOIN ps_product p ON p.id_product = sa.id_product
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
  AND sa.quantity <= 0
  AND (
    sa.id_product_attribute > 0
    OR NOT EXISTS (SELECT 1 FROM ps_product_attribute pa WHERE pa.id_product = p.id_product)
  );

7. Zerowa waga, zerowa cena, brak meta tytułu

-- produkty fizyczne bez wagi (koszty wysyłki będą błędne)
SELECT id_product, reference FROM ps_product
WHERE active = 1 AND is_virtual = 0 AND weight = 0;

-- cena 0 lub mniej
SELECT ps.id_product, pl.name, ps.price
FROM ps_product_shop ps
JOIN ps_product_lang pl
  ON pl.id_product = ps.id_product AND pl.id_lang = 1 AND pl.id_shop = ps.id_shop
WHERE ps.id_shop = 1 AND ps.active = 1 AND ps.price <= 0;

-- pusty meta tytuł
SELECT p.id_product, pl.name
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1 AND COALESCE(pl.meta_title, '') = '';

Co poprawić najpierw

Dziesięć list po kilkaset wierszy to jeszcze nie plan. Kolejność, która sprawdza się w większości sklepów:

  1. Produkty, które reklamujesz. Cena, stan, zdjęcia i GTIN wszystkiego, co jest w Google Shopping albo Meta – tam błędy kosztują codziennie.
  2. Bestsellery. Posortuj po sprzedaży i popraw opisy oraz zdjęcia w pierwszej pięćdziesiątce.
  3. Wszystko, co nowe. Dodaj sprawdzanie przed publikacją, żeby braki przestały przybywać.
  4. Długi ogon, partiami.

Ograniczenia SQL

Zapytania działają, ale dają dziesięć osobnych list, jeden problem na wiersz. Trzeba je połączyć w arkuszu, ocenić, który produkt jest najgorszy, i powtórzyć wszystko za miesiąc. Do tego każdy katalog traktują tak samo, a sklep z meblami potrzebuje innych reguł niż sklep z koszulkami.

Jeden skan zamiast dziesięciu zapytań

Product Data Guardian robi wszystkie te sprawdzenia w jednym skanie i daje każdemu produktowi wynik 0–100. Największe problemy widzisz na jednym ekranie, klikasz w problem i dostajesz dokładną listę produktów, a przy każdym krótkie wyjaśnienie, czego brakuje. Reguły i wagi mogą się różnić w zależności od kategorii, skany mogą działać według harmonogramu, a nieopublikowane produkty można sprawdzić przed wystawieniem.

Zobacz Product Data Guardian

← Wszystkie artykuły

Formularz kontaktowy

Dotyczy modułu: Product Data Guardian – ocena jakości katalogu i feedy reklamowe