2011-11-28 15 views
5

मैं एसक्यूएल स्क्रिप्ट पर बहुत नया हूं और यह पता नहीं लगा सकता कि प्रत्येक लूप के लिए विशिष्ट कैसे बनाया जाए। मुझे ऐसा कुछ करने की ज़रूरत है:एसक्यूएल फोरैच लूप

मेरे पास Sites और SiteCrawls टेबल हैं।

असल में, हर साइट के लिए मैं एक नया SiteCrawl बनाने की जरूरत है और SiteCrawl के Site_ID स्तंभ है कि साइट का आईडी के बराबर होगा।

मैं यह कैसे कर सकता हूं?

+4

एक शब्द: ** यह मत करो ** एक foreach पाश के साथ - एसक्यूएल है ** सेट आधारित ** - आप डेटा ** ** सेट में सोचते हैं और काम करते हैं। आरएआरएआर (पंक्ति-दर-एगोनिज़िंग-पंक्ति) का उपयोग करना फ़ोरैच लूप की तरह प्रदर्शन –

उत्तर

12
insert SiteCrawl 
(
    Site_ID 
) 
select 
s.Site_ID 
from Site as s 
where s.Site_ID not in (select Site_ID from SiteCrawl) 
4
insert into site_crawl (site_id) values (select site_id from site); 

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

इसके अलावा: आप एसक्यूएल के बारे में और इसके उपयोग के बारे में और अधिक पढ़ना चाहते हैं।

मज़े करो, एसक्यूएल बहुत मजेदार है!

+0

के लिए बहुत खराब है आपकी प्रतिक्रिया के लिए धन्यवाद। जैसे मैंने कहा, एसक्यूएल में वास्तव में नया और निश्चित रूप से इस पर काम करेगा। – ygit

1
insert into SiteCrawls (SiteID) 
select SiteID 
    from Sites 
+0

बस एक ही समस्या थी, यह मदद की है। –

3

एसक्यूएल में आप आम तौर पर नहीं हर रिकॉर्ड से अधिक लूप करना चाहते हैं। यह बहुत अक्षम है।

आप की तरह

insert into SiteCrawl (Site_Id) 
select Id from Sites 
1

कुछ कर सकते हैं आप ट्रिगर द्वारा यह कर सकते हैं

CREATE TRIGGER tg AFTER INSERT ON `Sites` 
FOR EACH ROW 
BEGIN 
insert into SiteCrawls(Site_ID) values (NEW.id); 
END 
; 
+0

+1 जो कि दिए गए समस्या के लिए अधिकतर संभावना है, लेकिन एक अच्छा समाधान है। –

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