Sollen Daten schnell ausgelesen werden, ist es meist hilfreich direkt auf die Datenbank zurückzugreifen. Nachfolgend stellen wir ein paar nützliche Abfragen vor, die den Alltag mit Shopware erleichtern:

Holen von Kunden, die doppelt angelegt wurden (Mail):

SELECT email, COUNT() FROM s_user where accountmode = 0 and active = true GROUP BY email HAVING COUNT() > 1;

Holen aller Bestellungen mit verschlüsselter Mail:

SELECT SHA1(TRIM(email)) as email, s_order.* FROM s_order
LEFT JOIN s_user ON s_user.id = s_order.userID;

Auslesen Kundeninformationen ohne sensible Daten:

SELECT SHA1(TRIM(email)) as email, accountmode, active, affiliate,
LEFT(birthday,4) as birthday, changed, confirmationkey,
customergroup, customernumber, default_billing_address_id,
default_shipping_address_id, doubleOptinConfirmDate, doubleOptinEmailSentDate,
doubleOptinRegister, failedlogins, firstlogin, firstname, id, internalcomment, language,
lastlogin, lockeduntil, login_token, newsletter, password_change_date, paymentID,
paymentpreset, pricegroupID, referer, register_opt_in_id, salutation, sessionID,
subshopID, title, validation FROM s_user;

Auslesen Bestelldaten, bei denen die Bestellnummer doppelt vergeben wurde (unter Umstände bei einer Kombination mehrerer Plugins & Paypal möglich):

SELECT ordernumber FROM s_order WHERE ordernumber>0
GROUP by ordernumber HAVING count(*)>1

Ermitteln aller Artikel ohne Bestand:

SELECT DISTINCT de.articleID, de.ordernumber, instock FROM
s_articles_details de
INNER JOIN s_articles_attributes at on
de.id = at.articledetailsID
WHERE instock <= 0;

Ermitteln aller Artikel ohne gültigen Preis:

SELECT DISTINCT de.articleID, de.ordernumber FROM
s_articles_details de
INNER JOIN s_articles_attributes at on
de.id = at.articledetailsID
inner join s_articles_prices sap
on at.articledetailsID = sap.articledetailsID
WHERE (price is NULL OR price <= 0)
and sap.pricegroup=“EK“;

Auswertung des Umsatzes nach Kategorie:

SELECT SQL_CALC_FOUND_ROWS COUNT(DISTINCT orders.id) AS Bestellungen,
CONCAT(ROUND(SUM((details.price * details.quantity)/currencyFactor), 2), ‚ EURO‘) AS Umsatz,
categories.description as Kategoriename,
categories.id as KategorieID
FROM s_order orders
INNER JOIN s_order_details details
ON orders.id = details.orderID AND
details.modus=0
INNER JOIN s_articles articles
ON details.articleID = articles.id
INNER JOIN s_articles_categories_ro articleCategories
ON articles.id = articleCategories.articleID
INNER JOIN s_categories categories
ON articleCategories.categoryID = categories.id
WHERE (orders.status NOT IN (4, -1))
GROUP BY categories.description;

Showpare-Blog

Bei weiteren Fragen nutzen Sie gerne unser Kontaktformular

Kategorien
Neueste Beiträge