Kombinacje bez powtórzeń zbioru liczb – zapytanie SQL

Pytanie zgłoszone przez czytelnika. W jaki sposób z zestawu liczb będących w osobnych rekordach wyświetlić kombinacje bez powtórzeń. Dla przykładu wyświetlimy kombinacje bez powtórzeń zbioru 3 elementowego ze zbioru 6 elementowego. n!/k!(n-k)! Tworzymy tabelę testową: W zapytaniu nasze dane złączamy 3 krotnie bo takiej wielkości zbiór unikalnych liczb chcemy uzyskać, złączamy z warunkiem na różne … Czytaj dalej „Kombinacje bez powtórzeń zbioru liczb – zapytanie SQL”

Zapytanie grupujące minimalnne wartości w grupie danych

Problem: Chcemy wyświetlić miesięczne zestawienie liczby nowo zarejestrowanych użytkowników mając jedynie daty ich logowań. Posiadane dane: Tabela z datami logowań użytkowników aplikacji w tabeli postaci: CREATE TABLE logs( id SERIAL PRIMARY KEY, — unikalny klucz główny id_user INTEGER, — klucz obcy tabeli użytkowników date TIMESTAMP — data logowania ); Przykładowe rekordy: INSERT INTO logs(id_user,date) VALUES(1,’2008-01-01′); … Czytaj dalej „Zapytanie grupujące minimalnne wartości w grupie danych”

Sprawdzanie permutacji ciągu znaków w PostgreSQL

Permutacja w języku matematycznym to „wzajemnie jednoznaczne przekształcenie pewnego zbioru na siebie”. Używając języka mniej technicznego permutacje, na przykładzie liter w słowie, to wszystkie możliwe ustawienia literek w słowie, zatem dla słowa „marcin” permutacjami będą: „amrcin”, „mracin”, „mrcain” etc… w słowie 6 znakowym będzie ich łącznie 6!. Problem W bazie danych mamy pole tekstowe z … Czytaj dalej „Sprawdzanie permutacji ciągu znaków w PostgreSQL”

Numerowanie listy zwracanych rekordów w MySQL

Przy różnorakich konkursach często zachodzi potrzeba wyciągnięcia pozycji konkretnego użytkownika (wpisu w bazie) na tle innych użytkowników (wpisów) w ograniczeniu czasowym. Czyli np. mamy 10 tys wyników gry z danego dnia i chcemy poznać pozycje w rankingu, które zajmują użytkownicy o identyfikatorach 1, 2, 3. Oczywistym rozwiązaniem jest zwykły selekt z ORDER BY po polu … Czytaj dalej „Numerowanie listy zwracanych rekordów w MySQL”

UPDATE z ORDER BY w jednym zapytaniu na przykładzie orderingu danych

Wstęp Mamy przykładową tabelę z userami: Na tabeli wykonywane były wielokrotnie operacje INSERT/UPDATE/DELETE przykładowo: Zatem SELECT bez orderu wyświetli nam dane posortowane względem kolejności modyfikacji: W interface aplikacji chcemy oprogramować własną obsługę kolejności rekordów. Dodajemy zatem kolumnę, która będzie obsługiwać tą funkcjonalność. Problem Musimy teraz uzupełnić kolumne order_id o poprawne wartości. Kolejność orderu danych, które … Czytaj dalej „UPDATE z ORDER BY w jednym zapytaniu na przykładzie orderingu danych”

Usunięcie nieużywanych tagów z bazy WordPress’a

Czasami zachodzi potrzeba „ręcznego” kasowania postów z WordPress’a, jako że system ten działa na MySQL MyISAM to nie wspiera kaskadowego kasowania zależnych danych. Skasowanie postów jest stosunkowo proste: Trudniejsza sprawa jest ze skasowaniem tagów. Na necie znalazłem poniższe zapytanie, działa wyśmielicie: Czasami jednak pole „count” w relacji „wp_term_taxonomy” zawiera niepoprawne dane (liczbę większą od 0), … Czytaj dalej „Usunięcie nieużywanych tagów z bazy WordPress’a”

Zrzut danych z bazy do pliku w MySQL

Metoda I Zapytanie z poziomu bazy danych. Metoda II Zapytanie z poziomu konsoli bez logowania się do bazy danych. Warto pamiętać, że w metodzie I plik zapisywany jest po stronie serwera mySQL a w metodzie II po stronie klienta mySQL. Zatem gdy łączymy się z bazą danych z innego serwera niż wykonujemy zapytanie to należy … Czytaj dalej „Zrzut danych z bazy do pliku w MySQL”

Aktualny czas a transakcja w PostgreSQL

Ostatnio miałem ciekawy case’ik – musiałem w obrębie jednej transakcji zmienić dane rekordów. Wszystko odbywało się w kilku funkcjach plpgsql, funkcje mogły się wywoływać rekurencyjnie w triggerach a zmiany dotyczyły między innymi pól typu TIMESTAMP. Wartości pól TIMESTAMP rekordów były zmieniane i ich zmiany automatycznie wpływały na w działanie skryptu. Jakież było moje zdziwienie gdy … Czytaj dalej „Aktualny czas a transakcja w PostgreSQL”

Postgres 8.3 a zgodność typów danych

Około rok temu została wypuszczona wersja 8.3 systemu bazodanowego postgreSQL, teraz po roku nadszedł wreszcie czas kiedy to firmy hostingowe zaczynają upgrate’ować bazy do tej wersji. W wersji 8.3 zostało prowadzonych wiele przydatnych funkcjonalności jak chociażby wyszukiwanie pełnotekstowe TSearch2, jednak nie o tym miałem pisać… Oprócz dodatkowych funkcjonalności w postgres 8.3 została wprowadzona kontrola zgodności … Czytaj dalej „Postgres 8.3 a zgodność typów danych”

Sortowanie względem pola nie będącego w DISTINCT ON

Problem: Chcemy wyświetlić jedynie unikalne rekordy względem konkretnego pola/pól i posortować innym polu. W naszym przykładzie chcemy otrzymać zestawienie id_user – ostatnie logowanie Posiadane dane: Tabela z datami logowań użytkowników aplikacji w tabeli postaci: CREATE TABLE logs( id SERIAL PRIMARY KEY, — unikalny klucz główny id_user INTEGER, — klucz obcy tabeli użytkowników date TIMESTAMP — … Czytaj dalej „Sortowanie względem pola nie będącego w DISTINCT ON”