Jak sprawdzić ile procentowo osób to kobiety mając w bazie danych same imiona?

MySQL - Tips & Tricks 3 komentarze »

Ostatnio miałem ciekawy problem do rozwiązania. Otóż w formularzu zamówienia klient podawał imię, nazwisko i adres. Musiałem sprawdzić ile procentowo osób, to kobiety. Wiadomo, jeśli by się okazało, że zamówienia składają głównie kobiety, to można pomyśleć o jakiś bonusach, które szczególnie się spodobają kobietom (np. aby nie oferować w ramach bonusu do zamówienia jakiegoś typowo męskiego upominku).

Baza danych wyglądała tak, że były kolumny id_zamówienia, imie, nazwisko, adres, kod pocztowy, miasto, kraj itp. Nie miałem w bazie danych kolumny płeć. Ale jest pewien ciekawy trik: Czytaj dalej »

Pobieranie danych według zakresów czasowych

MySQL - Analiza danych Komentarze (0) »

Czasami zachodzi potrzeba sprawdzenia czy np. w danym sklepie internetowym mamy wzrost zamówień, czy spadek. Jak tego dokonać? Najprościej jest zadać odpowiednie zapytanie, które nam policzy ilość zamówień (albo utarg) w danych przedziałach czasowych.

Moja tabela zamowienia składa się z następujących pól:

  • imie klienta
  • nazwisko klienta
  • … inne dane adresowe …
  • kwota do zapłaty
  • data zamówienia (w formacie UNIX, czyli ilość sekund, które upłynęły od początku roku 1970)
  • status zamówienia (0-nowe, 1-opłacone itp.)
  • … inne dane nieistotne do omówienia tego zagadnienia …

To czy będziemy badać ilość zamówień, czy utarg nie jest w tej chwili istotne (najlepiej badać te 2 rzeczy bo dzięki temu będziesz mógł łatwo policzyć średnią wartość koszyka zmieniającą się w czasie 🙂

No więc, aby policzyć utarg naszego sklepu od początku jego istnienia wystarczy zadać proste zapytanie:
SELECT sum(kwota) FROM zamowienia AND status=1
No dobra, ale co zrobić, aby podać utarg, ale z rozbiciem na miesięczne okresy? Tutaj są dwa sposoby. Pierwszy na jaki wpadłem to prosta pętla w PHP, która generuje mi szereg zapytań w postaci:
SELECT sum(kwota) FROM zamowienia WHERE data>=$data1 AND data<$data2 AND status=1
Zawartość zmiennej $data1 i $data2 można obliczyć za pomocą PHPowej funkcji mktime. Jest to proste rozwiązanie, ale jeśli sklep internetowy istnieje 2 lata to zadajemy bazie danych 24 zapytania (dla każdego miesięcznego okresu zadajemy po jednym zapytaniu). Ot nic wielkiego, baza danych to przeżyje. Ale co będzie, jeśli sklep istniej 10 lat?? Wtedy trzeba będzie zadać aż 120 zapytań!!

Ale jest na to sposób. Czytaj dalej »

Tagi: ,

Gdzie nasi użytkownicy zakładają konta e-mailowe?

MySQL - Analiza danych Komentarze (0) »

Zarządzając PP MapaZdrowia pojawił się pewien problem. Otóż klienci zamawiając towar za pobraniem, aby móc sfinalizować zamówienie muszą odebrać pocztę i zastosować się do instrukcji w e-mailu.

Problem pojawia się, gdy dana osoba nie otrzyma e-maila. Globalny współczynnik sfinalizowanych zamówień za pobraniem nigdy nie będzie wynosił 100%, zawsze część osób nie zastosuje się do wskazówek, w e-mailu, część osób nie dostanie e-maila, gdyż wyląduje w filtrze antyspamowym! Dlatego postanowiłem zrobić coś ciekawego: otóż zadać zapytanie, które policzy mi procentowy współczynnik zatwierdzonych zamówień w zależności od tego, na jakim serwerze pocztowym ktoś ma skrzynkę!!

I tutaj pojawił się problem. Otóż e-maile są zapisywane w tabeli zamowienia w kolumnie o nazwie email, ale e-mail jest zapisywany w formacie a mnie interesuje wyłowienie samego ciągu znaków domena.pl (np. onet.pl, wp.pl). Napisanie zapytania w stylu select email i przeparsowanie danych przez pętelki w PHP nie jest zbyt wydajnym pomysłem 🙂

W tym celu wymyśliłem coś takiego: Czytaj dalej »

Tagi: , , ,

Jak pobrać dane bez duplikatów?

MySQL - Analiza danych Komentarze (1) »

Czasami istnieje potrzeba, aby pobrać z bazy danych pewne dane bez duplikatów (bez powtórzeń). Załóżmy, że chcesz pobrać adresy e-mail wszystkich klientów, aby np. je zaimportować do zewnętrznej aplikacji w celu wysłania mailingu o świątecznej promocji.

Pisząc zapytanie
SELECT email FROM zamowienia
Dane zostaną zwrócone z powtórzeniami (czyli jeśli dany klient złożył kilka razy zamówienie, to jego e-mail zostanie zwrócony kilkukrotnie). Jednak dopisując do zapytania jedno magiczne słówko można pobrać dane bez powtórzeń… Czytaj dalej »

Tagi: ,

Jak zaimportować dużą bazę danych?

MySQL - import, eksport 3 komentarze »

Czasami istnieje potrzeba zaimportowania bazy danych (w tym wpisie mam na myśli import z pliku tekstowego). Oto dwie najczęściej występujące sytuacje:

  • coś zepsuliśmy i chcemy przywrócić poprzednią wersję bazy danych
  • baza danych uległa awarii
  • przenosimy się na inny serwer i importujemy na nowym serwerze zrzut bazy danych  wyeksportowany ze starego serwera

Jeśli baza danych jest małych rozmiarów, można to zrobić za pomocą phpMyAdmina. Jest to najszybszy i najwygodniejszy sposób. Ale czasami pojawiają się następujące problemy: Czytaj dalej »

Tagi: , ,

Jak zamienić dany ciag znaków innym ciągiem?

MySQL - Tips & Tricks 4 komentarze »

Czasami istnieje potrzeba szybkiej zamiany danego ciągu znaków innym ciągiem. Załóżmy, że prowadzisz bloga. I nagle musisz we wszystkich wpisach zmienić pewien fragment tekstu (np. w tekstach często linkowałeś do innej swojej strony, ale na skutek pewnych komplikacji owa zmieniłeś nazwę domeny do strony którą linkujesz).

Pierwsze rozwiązanie jakie przyjdzie Ci do głowy to ręczne przeglądanie wpisów na blogu i ich edycja. Ale jeśli wiesz w jakiej kolumnie i w jakiej tabeli są przechowywane treści wpisów, to już prawie jesteśmy w domu.

Kiedyś chciałem napisać prosty skrypt w PHP, który sczytuje wszystkie rekordy, dokonuje odpowiedniej operacji na stringu (tj. używa PHP’owej funkcji str_replace) a następnie jeśli zmieniła się zawartość stringa jest dokonywane zapytanie update.

Jednak MySQL posiada własną funkcję o nazwie replace! Dzięki temu bez zabawy w pisanie prostych skryptów PHP można zadać zapytanie, które odwali za Ciebie czarną robotę!! Oto prosty przykład: Czytaj dalej »

Tagi: , ,

Jak zacząć numerowanie kolumny typu auto_increment od innej wartości niż 1?

MySQL - Tips & Tricks Komentarze (0) »

Czasami zachodzi potrzeba numerowania kolumny typu auto_increment od wartości innej niż 1. Przykładowo: jeśli tworzysz jakiś serwis i nie chcesz, aby pierwsi użytkownicy się zrazili do niego widząc, że mają niski numer ID – a więc serwis nie jest popularny z czego wynika (często błędna) konkluzja, że skoro ma mało użytkowników, to jest kiepski.

Na szczęście można zacząć numerowanie od innej wartości. Co ciekawe, jeśli już są jakieś rekordy w bazy danych, to nadal można zmienić wartość, od której będą numerowane rekordy. Oto owe magiczne zapytanie:
ALTER TABLE tabela AUTO_INCREMENT =nowa_wartość_początkowa
np.
ALTER TABLE user AUTO_INCREMENT =100
Tutaj mała uwaga: nie można „cofnąć” licznika. Jeśli np. masz 50 userów, a w bazie jest dziura np. masz wolne miejsca o ID 10-40 to wydanie owego zapytania z wartością początkową 10 nie spowoduje, że nowi userzy będą mieć numery zaczynające się od 10.

Tagi:

WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj się