Operator WITH ROLLUP używa się w połączeniu z GROUPBY. Czasami istnieje potrzeba grupowania wyników po dwóch kolumnach. Wyobraźmy sobie, że mamy tabelę lub widok zawierający listę sprzedanych produktów. Będziemy mieli zatem takie kolumny jak “nazwa produktu”, “nazwa sklepu w którym został sprzedaży produkt” oraz “typ produktu”. Przykładowe zapytanie wyglądałoby więc następująco:select StoreName,ProductType,sum(Number) from SoldProducts GROUPBY StoreName,ProductType Zapytanie zwróci produkty pogrupowa...
Bazy danych i XML 5272 dni, 10 godzin, 7 minut temu 52 źrodło rozwiń
W tym artykule przedstawione zostanie jak można przenieść informacje z DataSet'a (układ i zawartość) do bazy danych opartej o Microsoft SQL Server (również w wersji Express). W tym celu zostaną wykorzystane SQLServer Management Objects (SMO) i SqlBulkCopy. Ze wspomnianym problem spotkałem się już jakiś czas temu (przeczytajcie na devPytaniach: „Jak z DataSet’a wytworzyć bazę danych?”), ale dopiero teraz znalazłem chwilę czasu, aby rozwiązanie opisać.
Bazy danych i XML 5280 dni, 9 godzin, 27 minut temu 99 źrodło rozwiń
OUTPUT pozwala na zwrócenie wierszy d0danych, zaktualizowanych lub usuniętych za pomocą komend INSERT, UPDATE i DELETE. Zwrócony wynik możemy wyświetlić po prostu na ekranie lub wstawić do innej tabeli. Wyobraźmy sobie, że mamy tabele Employee oraz EmployeeLog zawierającą logi. W celu wykonania loga możemy: INSERTINTO Employee (IDEMPLOYEE,FirstName,LastName) OUTPUT getdate(),'wstawiono wiersz',inserted.IDEMPLOYEE INTO EmployeeLog values(1,'Jakies imie,','Jakies nazwisko'); Równoważny efekt można osi...
Bazy danych i XML 5285 dni, 15 godzin, 47 minut temu 47 źrodło rozwiń
W SQL Server 2005 wprowadzono operator Apply. Służy on do łączenia tabeli z funkcją zwracającą również tabelę (table-valued function). Po lewej stronie operatora mamy więc zwykłą tabelę (np. "Employees”) a po prawej jakąś funkcję (np. “GetContactInfo”). Apply wywoła GetContactInfo dla każdego wiersza z Employee. W T-SQL występują dwie odmiany operatora: CROSS APLY i OUTER APPLY. Pierwszy z nich złączy wyłącznie te wiersze dla których funkcja zwraca jakiś wynik. Z kolei OUTER APPLY złączy wiersze zastęp...
Bazy danych i XML 5289 dni, 7 godzin, 45 minut temu 79 źrodło rozwiń
Transakcje to fajna sprawa. Polubiłem je od pierwszego użycia. Zostałem oczarowany przez ich magiczną właściwość — zwalniają z myślenia o spójności danych. Cool, przecież nie lubię myśleć. Jeszcze bardziej byłem oczarowany, gdy odkryłem transakcje rozproszone. To dopiero jazda. Mogę coś “zapdejtować” na tej bazie, na tej drugiej bazie i jeszcze wrzucić komunikat do kolejki MSMQ i wszystko wykona się transakcyjnie — w całości lub wcale. Od dłuższego czasu zaczynam jednak wątpić w trans...
Bazy danych i XML 5292 dni, 2 godziny, 14 minut temu 92 źrodło rozwiń
Załóżmy, że mamy tabelę składającą się z 4 kolumn: FirstName, LastName, CompanyName oraz PersonType. Pole PersonType przyjmuje ‘C’ gdy dany wiersz przedstawia firmę oraz ‘N’ gdy reprezentuje osobę fizyczną. Następnie chcemy wyświetlić w zależności od typu osoby nazwę firmy (C) lub imię+nazwisko(N). Zadanie można zrealizować za pomocą klauzuli case when:select (casewhen PersonType='C'then CompanyName else FirstName+''+LastName end) Name from Persons Powyższy przykład miał tylko pokazać zastosowanie ca...
Bazy danych i XML 5304 dni, 5 godzin, 49 minut temu 58 źrodło rozwiń
Jakiś czas temu napisałem artykuł o podstawach EF. Jeśli ktoś interesuje się EF to możliwe, że zaciekawi go mój nowy artykuł o wykorzystaniu Entity Framework w aplikacji trójwarstwowej – warstwa prezentacji jest oddzielona usługą sieciową (WCF) od warstwy dostępu dodanych. Miłego czytania: http://msdn.microsoft.com/pl-pl/library/ff714342.aspxExplore posts in the same categories:EntityFramework This entry was posted on Friday, June 4th, 2010 at 10:39 am ...
Bazy danych i XML 5308 dni, 3 godziny, 21 minut temu 108 źrodło rozwiń
W minioną sobotę miałem przyjemność uczestniczyć w krakowskiej edycji Visual Studio Community Launch [...] Przykłady kodu dla obu prezentacji umieściłem na MSDN Code Gallery odpowiednio tutaj i tutaj. Zapewne duża część z Was nie była na konferencji, dlatego postanowiłem owe przykłady omówić tutaj, na blogu. Dziś – EF4.
Bazy danych i XML 5309 dni, 21 godzin, 30 minut temu 310 źrodło rozwiń
Zapytanie z opcją FOR XML generujące obiekt XML i metoda nodes() zastosowana do niego mogą stanowić wzajemnie odwrotne transformacje. Zobaczmy to na przykładzie.
Bazy danych i XML 5311 dni, 17 godzin, 45 minut temu 56 źrodło rozwiń
RavenDB właśnie został oficjalnie opublikowany. Przez kilka ostatnich dni popołudniami i ł eksperymentowałem z tą technologią. Teraz chciałbym się z Wami podzielić moimi odczuciami. Z początku byłem nastawiony bardzo sceptycznie — kolejna zabawka Ayende. Po Rhino DHT, Rhino PHT, Rhino Queues, Rhino ServiceBus i innych, których nie pamiętam, straciłem entuzjazm. W końcu jednak postanowiłem dać Raven’owi szanse. W końcu j...
Bazy danych i XML 5319 dni, 20 godzin, 55 minut temu 362 źrodło rozwiń
Zobaczcie ciekawy przypadek z użyciem konstrukcji ‘every … satisfies’ w metodzie query zastosowanej do obiektu typu XML. Ale aby dojść do sedna sprawy trzeba zdefiniować dwa pojęcia:sekwencje, sposób wartościowania logicznego w XQuery. I. Sekwencje Na początek definicja pustej sekwencji. Wygląda to tak: () Sekwencję tworzy się poprzez...
Bazy danych i XML 5330 dni, 17 godzin, 5 minut temu 27 źrodło rozwiń
Podczas generowania modelu encji na podstawie bazy danych, EF potrafi pobrać maksymalną długość pola. Jeśli kolumna w bazie posiada typ nvarchar(50) to EF zmapuje to na zmienną typ string oraz ustawi pole MaxLength na wartość 50. Informacja o dozwolonej długości (50) jest zapisana w metadanych. Niestety próba przypisania wartości dłuższej niż 50 znaków zakończy się powodzeniem ponieważ nvarchar(50) został zmapowany na string, który nie ma ograniczenia do 50 znaków. Poniższy kod NIESTETY zadziała:Conta...
Bazy danych i XML 5337 dni, 20 godzin, 32 minuty temu 34 źrodło rozwiń
Interfejsy IEnumerable oraz IQueryable mogą wydawać się bardzo podobne. W końcu IQueryable implementuje IEnumerable więc funkcjonalność musi być podobna. W praktyce poniższe dwa zapytania bardzo się różnią:IEnumerable
Bazy danych i XML 5337 dni, 20 godzin, 32 minuty temu 101 źrodło rozwiń
Entity Framework jest rozbudowanym narzędziem ORM (ang.Object Relational Mapping), dołączonym do Visual Studio. Dzięki zaawansowanemu IDE tworzenie modelu danych jest bardzo łatwe i w pełni zautomatyzowane.
Bazy danych i XML 5338 dni, 7 godzin, 36 minut temu 159 źrodło rozwiń
Metoda SQL CLR, która potrafi zweryfikować czy użytkownik podaje właściwe dane logowania Google. Przydatne jeżeli chcesz umożliwić swoim użytkownikom zalogowanie się poprzez konto Google.
Bazy danych i XML 5346 dni, 9 godzin, 28 minut temu 87 źrodło rozwiń
LINQ jest potężnym rozszerzeniem .NET, umożliwiającym nam wykonywanie zapytań na kolekcjach obiektów co za tym idzie wybranie elmentu o ID 10 z kolekcji procownicy, staje się banalnie proste. Jednakże by LINQ zadziałało to musi istnieć jakiś provider, który przetłumaczy dane zapytanie na określony język - LINQ2SQL, LINQ2nHibernate itp. itd. Takich rozszerzeń jest masa i Charlie stara się trzymać ich listę up-to-date. Czy są to wszystkie aktualnie dostępne providery? Na pewno nie, jednakże lista jest pok...
Bazy danych i XML 5366 dni, 20 godzin, 18 minut temu 40 źrodło rozwiń
Workstation ID i HOST_NAMEsobota, 20 marzec 2010 Kiedyś zostałem zmuszony do szybkiego, nawet bardzo szybkiego, zrealizowania zagadnienia: "archiwizacja poczynań użytkownika w systemie". Prościej rzecz ujmując, rejestracji 3 podstawowych operacji na każdej tabeli, a dokładniej jej wierszach, mianowicie: INSERT, UPDATE, DELETE. Poniżej zaprezentuję jak uporałem się z tym zagadnieniem. Zacznę więc od początku. Workstation ID - cóż to jest takiego? Jest to jeden z wi...
Bazy danych i XML 5377 dni, 7 godzin, 25 minut temu 41 źrodło rozwiń
Próba zapisania obiektu naruszającego więzy integralności przy użyciu biblioteki NHibernate spowoduje wygenerowanie wyjątku GenericADOException. Dopiero sięgając do wartości właściwości InnerException możemy przekonać się, co jest przyczyną niepowodzenia. Istnieje jednak sposób na zastąpienie standardowego wyjątku własnym.
Bazy danych i XML 5398 dni, 3 godziny, 36 minut temu 58 źrodło rozwiń
Oryginalny post: Maybe Normalizing Isn't Normal Autor: Jeff Atwood Jednym z problemów z jakimi mierzymy się teraz przy Stack Overflow jest utrzymanie wysokiego poziomu wydajności relacyjnej bazy danych, podczas gdy jej rozmiar znacząco rośnie. Bardziej precyzyjnie, chodzi o skalowanie naszego systemu tagów. Dobrze zaprojektowana baza danych to baza znormalizowana, tak mówią tradycyjne zasady projektowania. Niemniej jednak, ja nie jestem tego taki pewien. Dare Obasanjo opublikował świetny post pt. Kiedy...
Bazy danych i XML 5400 dni, 6 godzin, 43 minuty temu 79 źrodło rozwiń
Ostatnio napotkałem problem, który powodował, że niektóre rekordy nie wyszukiwały się względem określonej wartości. Powodem okazała się zbyt duża liczba miejsc po przecinku wartości przechowywanej w kolumnie typu money. Nasuwa się tutaj pytanie: W jaki sposób szybko wyszukać rekordy w bazie danych, które posiadają wartość kwoty z dokładnością większą niż dwa miejsca po przecinku? Rozwiązanie było dosyć proste: ...
Bazy danych i XML 5401 dni, 9 godzin, 26 minut temu 51 źrodło rozwiń