2013-01-05 6 views
6

धन्यवाद:एसक्यूएल का चयन आपकी मदद के लिए अग्रिम में शामिल हों स्तंभ ALIAS

[People] तालिका में दो कॉलम है:

  • PersonID
  • PERSONNAME

[Marriages] तालिका तीन स्तंभ हैं:

  • MarriageID
  • PersonIDa
  • PersonIDb

मैं निम्नलिखित स्तंभों का चयन करना चाहते हैं:

  • MarriageID
  • PERSONNAME (personIDa के लिए)
  • PERSONNAME (personIDb के लिए)

मुझे लगता है कि मुझे कथन का उपयोग JOIN के साथ करने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि प्रत्येक PersonName पर एक अद्वितीय उपनाम कैसे असाइन किया जाए। यह वही है मैं अब तक (वह काम नहीं करता) है:

SELECT 
    [Marriages].[MarriageID], 
    [People].[PersonName] AS aName, 
    [People].[PersonName] AS bName 
FROM 
    [Marriages] 
JOIN 
    [People] ON [Marriages].[PersonIDa] = [People].[PersonID] 
JOIN 
    [People] ON [Marriages].[PersonIDb] = [People].[PersonID] 

धन्यवाद फिर से ...

+0

आपको बाएं आउटटर जॉइन –

उत्तर

7

क्या यह मेल खाता है जो आप पूरा करने की कोशिश कर रहे हैं?

SELECT m.[MarriageID], peopleA.[PersonName] AS aName, peopleB.[PersonName] AS bName 
FROM [Marriages] M 
JOIN [People] peopleA ON m.[PersonIDa] = peopleA.[PersonID] 
JOIN [People] peopleB ON m.[PersonIDb] = peopleB.[PersonID] 
2

मुझे लगता है कि आप ऐसा करने की कोशिश कर रहे ...

SELECT 
m.[MarriageID], 
pa.[PersonName] AS aName, 
pb.[PersonName] AS bName 
FROM [Marriages] m 
JOIN [People] pa ON m.[PersonIDa] = pa.[PersonID] 
JOIN [People] pb ON m.[PersonIDb] = pb.[PersonID]; 
1

आप की तरह कुछ की आवश्यकता होगी:

Select MarriageID, a.PersonName, b.PersonName 
From Marriages m 
Join People a On a.PersonID = m.Person1ID 
Join People b on b.PersonID = m.Person2ID 
1

मत भूलना आप की जरूरत में शामिल हों किस प्रकार ... "आंतरिक शामिल हों"/"वाम बाहरी शामिल हों"/"सही बाहरी शामिल हों"/"क्रॉस जॉइन"

SELECT MarriageID, a.PersonName, b.PersonName 
FROM Marriages m JOIN People a ON a.PersonID = m.Person1ID 
       JOIN People b ON b.PersonID = m.Person2ID 
+0

+1 का उपयोग नहीं करते हैं, तब तक आपको टेबल और कॉलम नामों के चारों ओर स्क्वायर ब्रैकेट की आवश्यकता नहीं होगी। क्या आप वास्तव में विश्वास करते हैं कि लोग इसे समझ सकते हैं? आपने इसे और अधिक जटिल बना दिया है कि आपकी मूल क्वेरी। सिंटैक्स वाले लोगों को भ्रमित करने के बजाय सही एसक्यूएल कथन को लिखने के बारे में कैसे मान्य एसक्यूएल नहीं है –

-1

सभी को धन्यवाद; आपके सुझाव पूरी तरह से काम किया। जब मैं जॉइन स्टेटमेंट में दोहराई गई तालिका के लिए उपनाम बनाने की कोशिश कर रहा था, तो मैं SELECT कथन में बार-बार कॉलम के लिए उपनाम बनाने की कोशिश कर रहा था।

किसी और को जो इस में चलाता है के लिए:

SELECT 
[TABLE1 NAME].[TABLE1 COLUMN], 
(TABLE2 ALIAS1).[TABLE2 COLUMN], 
(TABLE2 ALIAS2).[TABLE2 COLUMN], 
FROM [TABLE1 NAME] 
JOIN [TABLE2 NAME] (TABLE2 ALIAS1) ON [TABLE1 NAME].[TABLE1 MATCHING COLUMN] = (TABLE2 ALIAS1).[TABLE2 MATCHING COLUMN] 
JOIN [TABLE2 NAME] (TABLE2 ALIAS2) ON [TABLE1 NAME].[TABLE1 MATCHING COLUMN] = (TABLE2 ALIAS2).[TABLE2 MATCHING COLUMN] 

अन्य नाम बयान शामिल हों में बनाया है और जहां यह SELECT कथन, चारों ओर नहीं अन्य तरीके से प्रयोग किया जाता है करने के लिए लागू किया जाता है।

+0

के बारे में उल्लेख करने के लिए SQL कीवर्ड या गैर-पश्चिमी वर्ण –