2010-10-02 12 views
5

मैं एक वेबसाइट के लिए एक गतिशील आरएसएस फ़ीड उत्पन्न करने के लिए प्रयास कर रहा हूँ, और मैं इसके लिए एक mySQL क्वेरी लिख मुसीबत में चल रहा हूँ। मेरे पास कई अलग-अलग सारणी हैं जिनके लिए मुझे डेटा की आवश्यकता है, और मैं उन सभी को तिथि के अनुसार क्रमबद्ध करना चाहता हूं।mySQL का उपयोग करके, मैं कई अलग-अलग तालिकाओं में दिनांक के अनुसार कैसे आदेश दूं?

एक नमूना तालिका के रूप में:

Chapters 
release ChapterTitle ChapterContent ExtraInfo 
10/12 'Chapter 1' 'Bla bla bla' StoryTitle 
10/14 'Chapter 2' 'Bla bla bla' StoryTitle 
10/16 'Chapter 3' 'Bla bla bla' StoryTitle 
10/18 'Chapter 4' 'Bla bla bla' StoryTitle 

NewsFeed 
DATETIME Title Article 
10/11 'Website Online!' 'I now have my website!' 
10/15 'Everything Working!' 'Everything is going well!' 

मैं चाहता हूँ तरह निम्न क्रम में चीजों को वापस करने के लिए:

Website Online Text 
Chapter 1 StoryTitle Text 
Chapter 2 Story Title Text 
Everything Working Text 
Chapter 3 Story Title Text 
Chapter 4 Story Title Text 

मैं पूरी शामिल होने की जरूरत होने जा रही है किसी तरह का अनुमान लगा रहा हूँ (और तथ्य यह है कि समय अलग-अलग प्रारूपों में है, जिससे जीवन कठिन हो रहा है), लेकिन यह लगभग उतना ही है जितना मैंने प्राप्त किया है।

कोई भी विचार?

संपादित करें: संघ विचार अच्छा है, लेकिन मैं यह उल्लेख करना भूल गया कि मुझे अतिरिक्त जानकारी प्राप्त करने की आवश्यकता है जिसे दो के बीच समान नहीं बनाया जा सकता है - उन्हें थोड़ा अलग हैंडलिंग की आवश्यकता है और मुझे इसका पता लगाने की आवश्यकता है (मुझे पता है कि जानकारी के लिए आसानी से पर्याप्त पता चला है मुझे पता है कि एक टेबल में आवश्यक है, और यदि मान शून्य है तो यह अन्य प्रकार की प्रविष्टि है)।

संपादित करें संपादित करें: यहाँ उचित कोड पर मेरे सबसे अच्छे अनुमान है, लेकिन डेटाबेस एक खाली तालिका लौटा रहा है और मैं पता नहीं क्यों। बाएं हिस्से में आधा जानकारी लौटती है, सही आधे हिस्से में रिटर्न में शामिल हों, और यदि मैं पूर्ण जुड़ाव का उपयोग करता हूं तो मुझे यह सब मिलना चाहिए, कोई भी नहीं।

select * 
from chapter 
full join newsFeed 
on releaseDate=newsFeed.release 
limit 0, 100 

उत्तर

1

बहुत काम के बाद, मैं अंत में सही क्वेरी मिल गया। समस्या यह साबित होती है कि MySQL पूर्ण बाहरी जुड़ने (डब्ल्यूटीएफ?) का समर्थन नहीं करता है इसलिए मुझे उन्हें एक साथ जोड़ना पड़ा। आदेश है कि संघ पर एक तरह से प्रदर्शन करने के लिए, मैं अपने आप SELECT खंड है, जो अज्ञात व्युत्पन्न उप तालिकाओं के साथ मुसीबत का कारण बना है कि संघ रैप करने के लिए होने को समाप्त।

अंतिम कोड आता है बाहर करने के लिए:

select * 
from 
(
    select * from 
    (
     select chapterTitle, storyID, chapterContent, newsFeed.article, newsFeed.Title, newsFeed.release 
     from chapter 
     right join newsFeed 
     on releaseDate=newsFeed.release 
    ) AS derivedTable1 
    union 
    select * from 
    (
     select chapterTitle, storyID, chapterContent, newsFeed.article, newsFeed.title, releaseDate 
     from chapter 
     left join newsFeed 
     on releaseDate=newsFeed.release 
    ) AS derivedTable2 
) as MainTable 
order By MainTable.release desc 
3
SELECT ChapterTitle AS Title, release AS `date` 
    FROM Chapters AS sq 
UNION ALL 
SELECT Title, `DATETIME` 
    FROM NewsFeed 
ORDER BY `date` 
+0

आप 'चाहते हो सकता है यूनिअन ALL' बल्कि, हालांकि – nos

+1

उपयोग यूनिअन आप डुप्लिकेट को हटाने की जरूरत है, और कोई जरूरत प्रत्येक कथन UNION'd किया जा रहा है पर कोष्ठक के लिए है या नहीं –

+0

मैं कोष्ठक वहाँ डाल सुरक्षा के लिए - यह performace पर कोई प्रभाव नहीं करना चाहिए। संपादन के लिए धन्यवाद। मुझे नहीं लगता कि यूनियन बनाम यूनियन सभी यहां कोई फर्क नहीं पड़ेगा, क्योंकि दोनों टेबलों में अलग-अलग डेटा होते हैं। – Mchl

संबंधित मुद्दे