Piszę jakiś system zarządzania zasobami.T-SQL ORDER BY zgodnie z warunkiem
Zasób jest instancją definicji. Definicja to metadane, w zasadzie zawiera ona właściwości.
To jest w ogóle moim DB:
TypeDefinition
id name
===============
1 CPU
PropertyDefinition
id name typeDefinitionId valueType
================================================
1 frequency 1 int
2 status 1 string
TypeInstance
id name typeDefinitionId
=================================
1 CPU#1 1
2 CPU#2 1
PropertyInstanceValue
id propertyDefinitionId typeInstanceId valueType intValue StringValue FloatValue
========================================================================================
1 1 1 int 10
2 2 1 string Pending
3 1 2 int 20
4 2 2 string Approved
Wymagania:
kolejność wszystkich zasobów zgodnie z wartością specyficzne własności.
Na przykład: zamów wszystkie zasoby według ich stanu status -> Znaczenie CPU # 2 pojawi się przed CPU # 1, ponieważ "Zatwierdzono" jest przed "Oczekujące".
Gdybyśmy zamówienie według częstotliwości, CPU # 1 pojawi się przed CPU # 2, ponieważ 10 jest przed 20.
Więc muszę uporządkować za każdym razem, według innej kolumny (intValue/stringValue/FloatValue/etc), w zależności od właściwości valueType.
Jakieś sugestie?
OGRANICZENIE:
PIVOT jest obecnie jedynym rozwiązaniem jakie myśli, ale to naprawdę nie jest możliwe, ponieważ DB jest ogromny i muszę zapytać się tak szybko, jak to możliwe.
Bardzo dziękuję z góry,
Michal.
postu kod masz tak daleko, i daj nam znać, gdzie utkniesz –
Wygląda na to, mieć szczególnie nieprzyjemną formę konfiguracji [EAV] (http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model). Masz również problem z denormalizacją, który może powrócić, aby cię ugryźć (ponieważ 'valueType' jest duplikowany w' PropertyInstanceValue'). Nie potrzebujesz pivota (i czy będzie on konsekwentnie porządkował _kolumny_, czy tak?), To można zrobić tylko z połączeniami i niektórymi skorelowanymi tabelami wyników, o ile napiszesz je dla jednej kolumny. Ale czy jesteś wyłącznie zainteresowany _phphabetycznym_ porządkiem statusu lub innymi kryteriami? –