Kawałek Kodu

Co tu się odskryptala?! Czyli programistyczne porady na luzie

Gul gul na full - czyli o złączeniu FULL (OUTER) JOIN w MySQL

Dziś wpis na FULL! Jak iść, to na całość!
Na Twoim ulubionym blogu pojawiały się już wpisy związane ze złączeniem LEFT JOIN, być może słyszałeś o złączeniu RIGHT JOIN (to jakby odbicie lustrzane LEFT JOIN), ale nie pojawiały się o FULL JOIN.

Skorzystamy z naszego oklepanego przykładu, czyli tabeli klient oraz tabeli zamowienie. W takim przypadku złączenie FULL JOIN wybierze nam klientów bez zamówień, klientów z zamówieniami (lub zamówienia klientów), oraz zamówienia bez klientów. Praktycznym przykładem może być po prostu widok gdzie chcemy zobaczyć listę klientów i ich ewentualne zamówienia oraz zamówienia bez przypisanych klientów. Pewnie zadajesz sobie pytanie skąd zamówienia bez klientów, ale możemy w tym momencie założyć, że ze względu na RODO (to już nie jest typ złączenia...) usunąłeś klientów, ale pozostawiłeś ich zamówienia. Co prawda nie dowiesz się kto dokładnie złożył takiego typu zamówienie, ale będziesz miec zachowaną historię sprzedaży.

Zbudujmy więc zapytanie oparte na tym złączeniu:

SELECT k.id_klient,z.id_zamowienie
FROM klient AS k
FULL OUTER JOIN zamowienie AS z ON z.id_klient=k.id_klient

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL OUTER JOIN...

Czyli tyle czytania na marne?

Jak w takim razie wykonać takie złączenie w MySQL?

Czytaj dalej

All inclusive... czyli jak unikać dynamicznego budowania zapytania SQL. Part II.

Zdarzyło Ci się pewnie nie raz pracować na więcej niż jednej tabeli (tabeli bazodanowej, a nie wyników meczu). A jeśli tak, to pewnie zdarzyło Ci się również łączyć obydwie przy pomocy złączenia LEFT JOIN. Jeśli nie, to pozwól, że wspomnę pokrótce na czym polega takie złączenie.

Załóżmy, że masz tabele klientów oraz tabele ich zamówień. Jeśli złączysz obydwie poprzez warunek w klauzuli WHERE lub poprzez INNER JOIN, otrzymasz wynik przedstawiający klientów i ich zamówienia. Ale tylko tych klientów, którzy złożyli (tym razem nie złączyli!) zamówienia. Tych, którzy zarejestrowali się w serwisie, ale nie mają zamówień, nie będzie widać w wyniku tego zapytania. Aby wyświetlić wszystkich klientów i zamówienia, należy użyć wspomnianiego złączenia LEFT JOIN. Dla takich klientów w miejscu ich zamówień otrzymasz wartości null.

Wyobraź sobie, że budujesz teraz system, który posiada możliwość filtracji wyników, a dokładnie pokazania wszystkich klientów i tylko tych z zamówieniami (pewnie jest tam jakiś ptaszek w formularzu, którym włączasz i wyłączasz tą opcję).

I tu rodzi się odwieczne pytanie. Czy da się? Czy da się zbudować tak zapytanie, żeby przekazując określoną wartość wybrać daną pulę wyników i wykorzystać tylko jedno złączenie?

Czytaj dalej

To be or not to be, that is the query...czyli jak unikać dynamicznego budowania zapytania SQL w zależności od istnienia wartości.

Czasem masz dobry humor, a czasem zły. W obydwu przypadkach możesz zostać w domu.
Czasem do Twojego zapytania dociera wartość wykorzystywana w klauzuli WHERE, a czasem jej kompletnie brak.

Czy w tym przypadku możesz używać stałej składni zapytania bez potrzeby jej modyfikowania w zależności od istnienia tejże wartości?

Czytaj dalej

Fire in the hole! Czyli o dziurach w MySQL.

Jeśli zmierzyłeś się kiedyś z duplikatami rekordów w bazie MySQL, to zapewne doświadczyłeś również zjawiska przeciwnego - ich braku. W tym wpisie zajmiemy się sposobami znalezienia dziur w... nie, nie, nie tam... w autonumeracji.

Jak podążać króliczą norą?

Czytaj dalej

Wyrzuceni poza nawias, czyli o JOIN, FROM i przecinku w MySQL

Zaczynasz przygodę z bazami danych. Stworzyłeś pierwszą. Tworzysz tabele. Wypełniasz danymi. Kreujesz pierwsze zapytania wkraczając w fascynujący świat klauzuli WHERE. Już chcesz wykrzyczeć swoją radość całemu światu, możnaby rzecz zJOINować się z nim, ale niestety kolejne zapytania z JOIN podcinają Ci skrzydła.

Błąd SQL (1054): Unknown column 'xxx' in 'on clause'

Czytaj dalej

Mam plan "b", czyli animacja bez grafiki.

Na tym blogu spotkałeś się być może już z magią. Magią kreacji czegoś prawie z niczego. I dziś się nie zawiedziesz. Pokażę Ci jak zostało stworzone animowane logo w znanym serwisie dla dzieci - Buliba.pl. Wierna kopia logo tego portalu powstała dzięki kilku elementom HTML oraz możliwościom CSS3. Dodatkowo ten drugi nadał dynamikę i finalny efekt dostał do odegrania idealną rolę - ikony preloadera.

Jak wygląda oryginalne, statyczne logo w postaci obrazka?

logo Buliba.pl serwisu gier dla dzieci

Będziemy potrzebowali stworzyć literkę "b" (brzuszek i kreskę), oko z obwódką i refleksami oraz uśmiech. Kod HTML jest prosty i w zależności od etapu budowy będziemy potrzebowali wybrane tagi.

<div class="blogo"><b></b><i></i><u></u></div>

A docelowo będą to trzy tagi + kontener na nie. Fajnie by było użyć tagów B, UL, I, B, A, ale aż tylu nam nie potrzeba.

Czytaj dalej