2009-11-04 8 views
9

आइए कहें कि मेरे पास एक ही भौतिक सर्वर पर दो अलग-अलग डेटाबेस, एक्स और वाई हैं।PHP MySQL डेटाबेस में शामिल हो जाता है

मेरे प्रश्नों के

सभी वर्तमान में एक्स

मुझे लगता है से बाहर चलाने मैं वाई में एक मेज है मैं एक्स के लिए उपलब्ध होने जुड़ने चाहते हैं।

तो ... अब मैं एक्स और वाई दोनों में एक्स और वाई दोनों की एक तालिका की प्रतिलिपि रखता हूं, लेकिन वाई में डेटा लगातार बदल रहा है, इसलिए प्रतिलिपि जल्द ही पुरानी हो गई है। इस एप्लिकेशन के लिए महत्वपूर्ण नहीं है, लेकिन दूसरे के लिए मैं अब डिजाइन कर रहा हूं यह सिर्फ नहीं करेगा।

एक्स अभी केवल वाई

में तालिका में पढ़ा उपयोग की जरूरत है वहाँ दो डेटाबेस भर में मिलती है क्या करने के लिए एक कारगर तरीका है?

मैं phs में एकाधिक डेटाबेस कनेक्शन खोलने के विरोध में एक MySQL समाधान पसंद करूंगा।

धन्यवाद।

संपादित करें: तो क्या इन पंक्तियों का हो जाता है

$conn = mysql_connect('localhost','username','password'); 
@mysql_select_db('database_name',$conn) 

?: और हाँ .. यह पुरानी ऐप्स, इसलिए mysqli के बजाय mysql है। मान लीजिए कि मैं इसे बदल सकता हूं।

EDIT2: तो मैं कहाँ database_name.table_name निर्दिष्ट नहीं करते हैं और सिर्फ table_name निर्दिष्ट मैं जो कुछ भी चयनित है, और जहां मैं database.table_name उल्लेख करूं मैं क्या मैं के लिए कहा .. ठीक? हां। काम करता है।

EDIT3: क्या एक ही डेटाबेस में क्रॉस डेटाबेस जुड़ने के विरुद्ध बनाम कोई महत्वपूर्ण प्रदर्शन किया जाता है? नहीं। बस तेज़ी से दिखता है।

आपके सभी प्रतिक्रियाओं के लिए धन्यवाद।

+0

ये पंक्तियां अपरिवर्तित बनी हुई हैं। आपको अभी भी mysql_select_db() का उपयोग करना होगा क्योंकि प्रश्नों को निष्पादित करने से पहले mysql को एक सक्रिय डीबी/स्कीमा की आवश्यकता होती है। – longneck

+1

mysql_select_db() वास्तव में आवश्यक नहीं है। यह केवल सक्रिय डिफ़ॉल्ट डीबी सेट करता है, और यदि आप 'db.table' – Jakub

उत्तर

2

संपादित करें: तो क्या इन पंक्तियों ?: का हो जाता है

$ Conn = mysql_connect ('स्थानीय होस्ट', 'उपयोगकर्ता नाम', ' पारण शब्द'); @mysql_select_db ('Database_Name', $ Conn)

mysql_select_db वैकल्पिक है। चूंकि यह उपयोग करने के लिए सक्रिय डीबी का चयन करता है। http://us3.php.net/manual/en/function.mysql-select-db.php

और हाँ .. यह पुरानी ऐप्स, mysqli की इसलिए mysql बजाय है। मान लीजिए कि मैं इसे परिवर्तित कर सकता हूं।

आईएमएचओ मुझे नहीं लगता कि MYSQL का उपयोग धीमा होने के साथ कुछ भी करना है, मेरे अपने शोध से, MYSQLi बनाम MYSQL के साथ बहुत तेज सुधार नहीं है। वास्तविक विश्व परीक्षण यह नहीं दिखाते कि एक बड़ा प्रदर्शन चालक है। मैं अपने सभी ऐप्स के लिए ईमानदारी से MYSQL के साथ अटक गया है।

+1

होने के लिए एक अच्छी आदत है मेरे सभी नए ऐप्स mysqli और तैयार कथन का उपयोग करते हैं। दोहराव वाली सामग्री तेज है, बाकी के बारे में बाकी है। –

13

आप अन्य डेटाबेस में तालिका अन्य नाम पर है:

select a.id 
    , b.foreign_id 
    from database1.table1 a 
    join database2.table1 b 
    on b.foreign_id = a.id 
+0

+1 निर्दिष्ट करते हैं, तो आप इसके बिना कर सकते हैं: तालिका उपनाम का उपयोग करना –

4

2 डेटाबेस एक ही सर्वर पर कर रहे हैं, तो आप बस तालिका में शामिल होने के प्रश्न में डेटाबेस नाम के साथ अर्हता प्राप्त कर सकते हैं।

select * from database1.table1 as t1 
inner join database2.table2 as t2 
on t2.fk_id = t1.pk_id 
1

बस एसक्यूएल का उपयोग

SELECT col1, col2 FROM foo f LEFT JOIN db2.bar b ON b.col1 = f.col1 
संबंधित मुद्दे