Zapraszam wszystkich na warsztaty SQL, które odbędą się w Krakowie, 18 września na terenie Wyższej Szkoły Zarządzania i Bankowości. Organizatorem warsztatów jest krakowski i katowicki oddział PLSSUG. W trakcie jednego dnia odbędą się trzy warsztaty poświęcone tematyce developerskiej, administracyjnej oraz BI. Wśród prowadzących specjaliści od SQL Server w tym MVP Grzegorz Solecki oraz Marcin Szeliga.
Więcej informacji o spotkaniu na stronie workshop.sqlday.pl . Rejestracja już otwarta (dostępna ze strony spotkania), niestety liczba miejsc jest OGRANICZONA do 60 a więc trzeba się spieszyć =). A już niedługo SQL DAY 2010, o którym więcej informacji już wkrótce
SQL Workshop. Kraków
VirtualStudy.pl – Czwartki z BI – Reporting Services
![]()
Na portalu SSAS.pl właśnie została zamieszczona moja prezentacja z cyklu Virtual Study – „Czwartki z BI” poświęcona SQL Server Reporting Services 2008. Wszystkich zainteresowanych zapraszam: http://ssas.pl/2010/07/18/virtualstudy-pl-czwartki-z-bi-reporting-services
Mam nadzieję, że już niedługo pojawi się wersja wideo na virtualstudy.pl =)
[T-SQL] Korzystaj z aliasów bo…
Załóżmy, że posiadamy dwie tabelki posiadające te same pola. Dla uproszczenia o to kod do ich stworzenia:
CREATE TABLE #TEST1 ([ID] INT,[IDN] VARCHAR(200)) INSERT INTO #TEST1 VALUES (1,'Jeden') INSERT INTO #TEST1 VALUES (2,'Dwa') INSERT INTO #TEST1 VALUES (3,'Trzy') INSERT INTO #TEST1 VALUES (4,'Cztery') INSERT INTO #TEST1 VALUES (5,'Pięć') INSERT INTO #TEST1 VALUES (6,'Sześć') INSERT INTO #TEST1 VALUES (7,'Siedem') INSERT INTO #TEST1 VALUES (8,'Osiem') INSERT INTO #TEST1 VALUES (9,'Dziewięć') INSERT INTO #TEST1 VALUES (10,'Dziesięć') CREATE TABLE #TEST2 ([ID] INT,[IDN] VARCHAR(200)) INSERT INTO #TEST2 VALUES (3,'Trzy') SELECT * FROM #TEST1 SELECT * FROM #TEST2
Powiedzmy, że teraz z tabelki #TEST1 chcemy usunąć te wartości, które znajdują się także w tabeli #TEST2. Wykonujemy więc bardzo prosty kawałek kodu:
DELETE FROM #TEST1 WHERE [IDN] IN (SELECT [IDN] FROM #TEST2)
Po usunięciu sprawdzamy co zostało nam w tabeli #TEST1:
SELECT * FROM #TEST1
Wynik jest taki jak chcieliśmy nie ma rekordu z wartością 3. Załóżmy, że jakiś nieznany osobnik skasował w naszej tabeli #TEST2 kolumnę [IDN] i ponownie dodał wartość 3 do tabeli #TEST1
ALTER TABLE #TEST2 DROP COLUMN [IDN] INSERT INTO #TEST1 VALUES (3,'Trzy')
Ponieważ w naszej tabeli #TEST1 ponownie pojawiła się wartość 3 chcemy ją znów usunąć. Ponieważ nie wiemy, że nasz złoczyńca skasował kolumnę [IDN] wykonujemy polecenie kasujące, z którego korzystaliśmy poprzednio. Zapewne część z was spodziewa się tego, że wynikiem takiego kasowania będzie błąd ponieważ nie ma już kolumny [IDN] w tabeli #TEST2..
Jeżeli wykonaliście już kod wiecie, że niestety nic takiego się nie stanie. Zamiast tego z tabeli #TEST1 zostaną skasowane wszystkie wpisy! Jeżeli zadajecie sobie pytanie „ALE DLACZEGO !!” odpowiedź jest bardzo prosta. Ponieważ SQL Server nie znalazł w tabeli #TEST2 kolumny [IDN] założył, że należy znaleźć inną kolumnę [IDN] i znalazł ją w tabeli #TEST1 co spowodowało że zapytanie kasujące było zinterpretowane tak samo jak następujące zapytanie:
DELETE FROM #TEST1 WHERE [IDN] IN [IDN]
Co oczywiście skasuje wszystkie wpisy w tabeli #TEST1. Jak uniknąć takich sytuacji ? Korzystaj z aliasów lub pełnych nazw w takich przypadkach. Wystarczy aby nasze zapytanie kasujące było zbudowane w następujący sposób:
DELETE FROM #TEST1 WHERE [IDN] IN (SELECT T2.[IDN] FROM #TEST2 T2)
Po wywołaniu tego zapytania zamiast skasować cokolwiek w tabeli #TEST1 dostaniemy następujący błąd:
Msg 207, Level 16, State 1, Line 1
Invalid column name ‘IDN’.
Co w założonej sytuacji jest jak najbardziej poprawne.
Socialnomics – rewolucja, która nas otacza
Prawda o internecie, który nas otacza… chociaż bardziej poprawnym stwierdzeniem było by: prawda o świecie, który nas otacza. Z drugiej strony bardzo dobra reklama ksiązki Erik Qualmana „Socialnomics”.
* znalezione na Facebooku =)
Data-tier Application – materiały z prezentacji
![]()
Już dawno miałem opublikować te materiały, ale jakoś się nie złożyło. Dlatego aby to naprawic umieszczam prezentację, oraz przykłady, które wykorzystałem w trakcie mojej sesji dotyczącej Data-Tier Application, która odbyła się podczas łódzkiego SQL Server 2008 R2 Community Launch.
Czwartki z BI.. już dziś
Razem z Bartkiem Graczykiem, Łukaszem Gralą i Grzegorzem Stoleckim mam wielką przyjemność zaprosić wszystkich na cykl sesji poświęconych Business Intelligence, które zostaną poprowadzone na VirtualStudy.pl.
W trakcie 8 sesji postaramy się przybliżyć wam tematy związane z podstawami BI, SSAS, SSIS oraz SSRS.
Rejstracja na spotkania znajduje się pod tym adresem: http://virtualstudy.pl/forum/spotkania/1262-czwartki-z-business-intelligence (continue reading…)
Długopisem po ekranie…
Kolejna ciekawa propozycja rozwinięcia technologii ekranów dotykowych stworzona przez Microsoft Research w oparciu o Microsoft Surface…
Godzina dla ziemi
Zainicjowana przez organizację ekologiczną WWF Godzina dla Ziemi to największa na świecie akcja społeczna na rzecz ograniczenia zmian klimatycznych. Miliony ludzi na całym globie na jedną godzinę zgaszą światło, aby symbolicznie przeciwstawić się największemu zagrożeniu dla naszej planety i apelować o konkretne działania na rzecz ograniczenia emisji gazów cieplarnianych. (continue reading…)
SQL Server 2008 R2 Launch – Łódź
Już 20 marca 2010 (sobota) zapraszam wszystkich na darmową konferencję z cyklu SQL Server 2008 R2 Launch, organizowaną przez PLSSUG.