सामान्य उदाहरण (PHP में):
प्रोग्रामिंग भाषा की सहायता से डायनेमिक SQL बनाना या अपने SQL क्वेरीज़ बनाना कुछ इस तरह दिखेगा (उदाहरण के लिए PHP में):
$pdos = $pdo->query("SHOW TABLES LIKE '%_name'");
$tables = $pdos->fetchAll();
$query = 'SELECT * FROM '.implode(' UNION SELECT * FROM ');
$pdo->query($query);
fetchAll
विधि एक सरणी लौटाएगी जिसमें चयनित प्रत्येक तालिका के नाम होंगे।
implode($glue, $array)
फ़ंक्शन एक सरणी लेता है और $glue
. का उपयोग करके सरणी में प्रत्येक मान को संयोजित करता है पैरामीटर - आमतौर पर आप मानों की एक सरणी लेते हैं और $glue = ','
का उपयोग करके उन्हें इंपोड करते हैं कोमा द्वारा अलग किए गए मानों की सूची बनाने के लिए।
हमारे मामले में implode
$glue
. के रूप में आंशिक क्वेरी है एक बड़ा UNION JOIN
create बनाने के लिए क्वेरी।
एक बार अंतिम $query
निर्मित है यह कुछ इस तरह दिखना चाहिए:
SELECT * FROM table_1_name
UNION
SELECT * FROM table_2_name
UNION
SELECT * FROM table_3_name
....
....
UNION
SELECT * FROM table_4000_name
परिणाम में सभी DISTINCT
शामिल होने चाहिए सभी 4000 टेबल से पंक्तियाँ।
विशिष्ट उदाहरण (केवल-SQL प्रारूप में):
SELECT GROUP_CONCAT(
CONCAT('select * from ', table_name)
SEPARATOR ' union '
)
INTO @my_variable
FROM information_schema.tables
WHERE table_schema = 'dbname'
AND table_name LIKE '%_name';
PREPARE my_statement FROM @my_variable;
EXECUTE my_statement;
- पहला स्टेटमेंट
information_schema
. से सभी टेबल के नाम प्राप्त करेगा डेटाबेस; - द
CONCAT
फ़ंक्शन प्रत्येक तालिका नाम को'SELECT * FROM '
. के साथ उपसर्ग करता है स्ट्रिंग; - द
GROUP_CONCAT
वह काम करता है जोimplode
PHP में किया होगा; -
INTO
क्लॉज सुनिश्चित करता है कि मानmy_variable
. नामक एक वेरिएबल के अंदर सहेजे गए हैं; -
PREPARE
कथन एक स्ट्रिंग मान लेता है (जैसे कि जिसे आपनेmy_variable
. में सहेजा है ) और जांचता है कि क्या मान एक SQL क्वेरी है; EXECUTE
बयान एक "तैयार बयान" लेता है और अच्छी तरह से ... इसे निष्पादित करता है।
@my_variable एक अस्थायी चर है लेकिन यह केवल एक अदिश प्रकार का हो सकता है (varchar, int, date, datetime, बाइनरी, फ्लोट, डबल आदि) यह नहीं है एक सरणी।
GROUP_CONCAT
फ़ंक्शन एक "एग्रीगेट फ़ंक्शन" है, जिसका अर्थ है कि यह एक समग्र मान लेता है (एक सरणी के समान अवधारणा - हमारे मामले में हमारी क्वेरी का परिणाम सेट) और एक साधारण स्ट्रिंग परिणाम आउटपुट करता है।