में आईडी की सीएसवी सूची में सभी मानों से मेल खाते हैं, मैंने एक सरल उदाहरण बनाया है (उम्मीद है कि मेरे वास्तविक डेटा से अधिक मजेदार) मेरे व्यक्तित्व को बेहतर व्यक्त करने के लिए प्रश्न:मैं केवल उन पंक्तियों को देने के लिए एक क्वेरी तैयार कर सकता हूं जो टी-एसक्यूएल
CREATE TABLE SUPER_HERO
( ID INT,
NAME VARCHAR(50)
)
INSERT INTO SUPER_HERO VALUES (1, 'Storm')
INSERT INTO SUPER_HERO VALUES (2, 'Silver Surfer')
INSERT INTO SUPER_HERO VALUES (3, 'Spider Man')
CREATE TABLE SKILL
( ID INT,
NAME VARCHAR(50)
)
INSERT INTO SKILL VALUES (1, 'Flight')
INSERT INTO SKILL VALUES (2, 'Weather Control')
INSERT INTO SKILL VALUES (3, 'Super Speed')
CREATE TABLE SUPER_HERO_SKILL
( SUPER_HERO_ID INT,
SKILL_ID INT
)
INSERT INTO SUPER_HERO_SKILL VALUES (1, 1) --Storm has Flight
INSERT INTO SUPER_HERO_SKILL VALUES (1, 2) --Storm has Weather Control
INSERT INTO SUPER_HERO_SKILL VALUES (2, 1) --Silver Surfer has Flight
INSERT INTO SUPER_HERO_SKILL VALUES (2, 3) --Silver Surfer has Super Speed
INSERT INTO SUPER_HERO_SKILL VALUES (3, 3) --Spider Man has Super Speed
बुरा क्वेरी (वांछित परिणाम नहीं दिखा रहा है) का उदाहरण:
DECLARE @DELIMITER CHAR = ','
DECLARE @CSV_STRING VARCHAR(20) = '1,3'
SELECT
SUPER_HERO_NAME = SUPER_HERO.NAME,
SKILL_NAME = SKILL.NAME
FROM
SUPER_HERO
JOIN SUPER_HERO_SKILL ON SUPER_HERO_SKILL.SUPER_HERO_ID = SUPER_HERO.ID
JOIN SKILL ON SUPER_HERO_SKILL.SKILL_ID = SKILL.ID
JOIN dbo.Split(@CSV_STRING, @DELIMITER) SPLIT ON SPLIT.ITEMS = SKILL.ID
मैं चाहते हैं क्या देखने के लिए:
जब DECLARE @CSV_STRING VARCHAR(20) = '1,3'
मैं केवल इसे ही देख "रजत Surfer" si एनसी वह कौशल 1 और 3 दोनों के साथ एकमात्र ऐसा है जो फ्लाइट और सुपर स्पीड से संबंधित है।
जब DECLARE @CSV_STRING VARCHAR(20) = '1,2,3'
मुझे किसी भी मेरे ब्रह्मांड में नायकों को नहीं देखना चाहिए क्योंकि कोई भी तीन कौशल सूचीबद्ध नहीं है।
कुछ सरल है कि मुझे याद आ रही होनी चाहिए। मैंने क्वेरी को कई अलग-अलग तरीकों से ढंकने की कोशिश की है। मैंने समस्या का प्रस्तुति जटिल नहीं करने के लिए यहां इसका सबसे सरल रूप प्रस्तुत किया है।
नोट:। मैं एक समारोह है कि सीमांकक में पारित के आधार पर एक Split रूप में कार्य करता का उपयोग
वाह क्या एक आश्चर्यजनक अच्छा प्रश्न है। इस के जवाब में रूचि है। –
आपके उदाहरण में सुपर हीरो का उपयोग करने के लिए +1 =) –