मुझे समझने में कठिनाई होती है कि बहुआयामी अभिव्यक्ति के परिणाम को कैसे फ़िल्टर किया जाए।कई से कई टेबल फ़िल्टरिंग
यह मेरा डेटाबेस स्कीमा है।
और यह अपने डेटा है।
Manufacturer
╔════╦═══════════════════╗
║ Id ║ Name ║
╠════╬═══════════════════╣
║ 1 ║ Awesome Computers ║
║ 2 ║ TailSpin Toys ║
╚════╩═══════════════════╝
Item
╔════╦═════════╦════════════════╦═══════╗
║ Id ║ Name ║ ManufacturerId ║ Stock ║
╠════╬═════════╬════════════════╬═══════╣
║ 1 ║ PC ║ 1 ║ 40 ║
║ 2 ║ Server ║ 1 ║ 10 ║
║ 3 ║ STB ║ 2 ║ 80 ║
║ 4 ║ Console ║ 2 ║ 50 ║
╚════╩═════════╩════════════════╩═══════╝
Part
╔════╦══════════════════╦════════╦══════════╦═══════╗
║ Id ║ Name ║ ItemId ║ StatusId ║ Stock ║
╠════╬══════════════════╬════════╬══════════╬═══════╣
║ 1 ║ MBO ║ 1 ║ 1 ║ 100 ║
║ 2 ║ Processor ║ 1 ║ 1 ║ 100 ║
║ 3 ║ Server MBO ║ 2 ║ 2 ║ 20 ║
║ 4 ║ Server processor ║ 2 ║ 2 ║ 20 ║
║ 5 ║ Main box ║ 3 ║ 2 ║ 40 ║
║ 7 ║ Adapter ║ 3 ║ 3 ║ 30 ║
║ 8 ║ Controller ║ 4 ║ 2 ║ 40 ║
║ 10 ║ Adapter ║ 4 ║ 1 ║ 60 ║
║ 11 ║ Memory card ║ 4 ║ 2 ║ 80 ║
╚════╩══════════════════╩════════╩══════════╩═══════╝
Status
╔════╦═════════════╗
║ Id ║ Name ║
╠════╬═════════════╣
║ 1 ║ No data ║
║ 2 ║ Available ║
║ 3 ║ Unavailable ║
╚════╩═════════════╝
मैंने सबकुछ टैब्यूलर मॉडल समाधान में आयात किया।
- टेबल मद:: ItemStock: = SUM ([स्टॉक])
- तालिका भाग: PartStock: = SUM ([स्टॉक])
फिर मैंने सर्वर पर घन तैनात किया।
निम्नलिखित MDX क्वेरी चलाकर ...
SELECT
NON EMPTY {
[Part].[Name].CHILDREN
} ON ROWS,
{
[Measures].[PartStock]
} ON COLUMNS
FROM [Model]
WHERE (
{
[Status].[Id].&[1]
}
)
... मैं इस resultset मिलता है ...
╔═══════════╦═══════════╗
║ ║ PartStock ║
╠═══════════╬═══════════╣
║ Adapter ║ 60 ║
║ MBO ║ 100 ║
║ Processor ║ 100 ║
╚═══════════╩═══════════╝
... जो ठीक है।
हालांकि, जब इस MDX क्वेरी चल रहा है ...
SELECT
NON EMPTY {
[Item].[Name].CHILDREN
} ON ROWS,
{
[Measures].[ItemStock]
} ON COLUMNS
FROM [Model]
WHERE (
{
[Status].[Id].&[1]
}
)
... मैं इस resultset हो रही है ...
╔═════════╦═══════════╗
║ ║ ItemStock ║
╠═════════╬═══════════╣
║ Console ║ 50 ║
║ PC ║ 40 ║
║ Server ║ 10 ║
║ STB ║ 80 ║
╚═════════╩═══════════╝
मैं उम्मीद कर रहा था कि ItemStock तालिका के आइटम होगा भाग तालिका से कई से अधिक रिश्तों के रूप में फ़िल्टर किया जाना चाहिए। जैसे MBO, प्रोसेसर और एडाप्टर, 1 आइटम और 4 के लिए संदर्भ है, तो परिणाम उन्हें करने के लिए विवश किया जाएगा, और परिणाम इस तरह बाहर कर देना चाहिए:
╔═════════╦═══════════╗
║ ║ ItemStock ║
╠═════════╬═══════════╣
║ Console ║ 50 ║
║ PC ║ 40 ║
╚═════════╩═══════════╝
क्या मैं गलत कर रहा हूँ?
आपके द्वारा डीबीए पर पोस्ट किए गए प्रश्न पर उत्तर दिया गया: http://dba.stackexchange.com/questions/119909/filtering-by-many-to-many-table – GregGalloway