Sortowanie

Najpierw zajmiemy siÄ™ sortowaniem danych. Wbrew pozorom jest to dosyć ważne zagadnienie, gdyż dobrze uÅ‚ożony warunek sprawia, kod PHP, czy ASP staje siÄ™ nawet o 300 linii krótszy :).

Bardzo dawno temu zastaÅ‚a mnie taka oto sytuacja: miaÅ‚em tabelÄ™ w bazie, w której byÅ‚o 6 pól typu logicznego (TINYINT(1)). MusiaÅ‚em posortować zawartość bazy wzglÄ™dem iloÅ›ci pól, które majÄ… wartość 1. NależaÅ‚o zsumować wiÄ™c wartoÅ›ci ich wszystkich i posortować wzglÄ™dem wyniku. Nie znaÅ‚em wtedy MySQL'a tak dobrze, jak teraz i jak gÅ‚upi próbowaÅ‚em zrobić to za pomocÄ… PHP. Kod rozrósÅ‚ siÄ™ niemiÅ‚osiernie, a efekt nie byÅ‚ zadowalajÄ…cy. Teraz proponujÄ™ takie rozwiÄ…zanie, które nie dość, że jest krótsze, to jeszcze wygodniejsze. Utwórz sobie w bazie tabelÄ™:

CREATE TABLE bool_sort (
   id smallint(10) NOT NULL AUTO_INCREMENT,
   s1 tinyint(1),
   s2 tinyint(1),
   s3 tinyint(1),
   s4 tinyint(1),
   s5 tinyint(1),
   PRIMARY KEY (id)
);
 
INSERT INTO bool_sort VALUES (1, 1, 1, 0, 0, 1);
INSERT INTO bool_sort VALUES (2, 0, 0, 0, 0, 0);
INSERT INTO bool_sort VALUES (3, 1, 1, 1, 1, 1);
INSERT INTO bool_sort VALUES (4, 0, 1, 0, 1, 0);
INSERT INTO bool_sort VALUES (5, 0, 1, 1, 1, 1);

Mamy tutaj tabelÄ™ z piÄ™cioma polami logicznymi (czyli mogÄ…cymi przyjmować wartość 0 lub 1). NastÄ™pnie wypeÅ‚niamy jÄ… danymi. Każdy rekord ma pewnÄ… ilość pól ustawionych na 1. Aby posortować jÄ… wedÅ‚ug tej iloÅ›ci, korzystamy z zapytania:

SELECT id FROM bool_sort ORDER BY (s1 + s2 + s3 + s4 + s5)

Możesz teraz przetestować to zapytanie i upewnić siÄ™, że dobrze posortowaÅ‚o. PrzejdÄ„my do jego omówienia. Jak widzisz, sortujemy wzglÄ™dem SUMY kilku pól - takie coÅ› jest dozwolone. Wbrew pozorom SQL wcale takim gÅ‚upim jÄ™zykiem nie jest. Bez problemu obsÅ‚uguje te i inne wyrażenia (bo tak siÄ™ nazywajÄ… dwie wartoÅ›ci połączone operatorami). Nawias z sumÄ… pól możesz przenieść także do zbioru wyników, aby z kolei zapytanie zwróciÅ‚o Ci odpowiednie wartoÅ›ci.

Do góry

Waszym zdaniem:

Uwaga: To jest jedynie część artykułu. Komentarze dotyczą całości tekstu.

Nikt jeszcze nie dodał swojego komentarza. Możesz być pierwszy!


Twoim zdaniem:

Reklama

banner

Partnerzy

CityDesign.pl
phpSolutions