मैं PHP और MySQL का उपयोग करके एक गतिशील क्वेरी बनाने की कोशिश कर रहा हूं।फ़ील्ड की सूची से गतिशील क्वेरी कैसे बनाएं?
मैंने क्या किया एक मेज बनाई गई है (यानी। field_relations
) इस क्षेत्र 5 स्तंभ
- FIELD_NAME (एक क्षेत्र का नाम है "यानी। ACCOUNT_ID, account_name ....") है
- display_label (वैसे कैसे क्षेत्र उपयोग करने के लिए विस्थापित किया जाना चाहिए "यानी। खाता क्रमांक, नाम")
- TABLE_NAME (टेबल जहां इस क्षेत्र के लिए "अर्थात्। खाते" हैं)
- related_to (करने के लिए क्षेत्र के संबंध एक अलग तालिका "अगर कोई है।" डिफ़ॉल्ट मान 0 है)
- related_to_field (क्षेत्र जहां यह कहते हैं करने के लिए "यदि कोई हो।" डिफ़ॉल्ट मान अगर मैं 3 के साथ एक HTML प्रपत्र बनाने
NULL
)
यहाँ एक नमूना डेटा field_name display_label table_name related_to related_to_field account_id Account ID accounts NULL NULL account_name Name accounts NULL NULL first_name First Name contacts NULL NULL last_name Last Name contacts NULL NULL contact_id Contact ID contacts NULL NULL account_id Account ID contacts accounts account_id task_id Task ID tasks NULL NULL subject Subject tasks NULL NULL owner_id Assigned To contacts contacts contact_id daily_sales Sales transactions accounts account_id sold_on Sold On transactions NULL NULL
तो है सेकंड
- पिक स्तंभ कॉलम (वैकल्पिक) ०१२३५१६४१० को
- जोड़ें सूत्र प्रदर्शित करने के लिए
- पिक्चर कंडीशन क्लॉज (वैकल्पिक)
- "प्रदर्शन परिणाम" बटन चुनें।
ths फॉर्म का पहला भाग display_label
कॉलम में सूचीबद्ध सभी मान प्रदर्शित करेगा।
एक उपयोगकर्ता उठाया Name, First Name, Last Name
तो क्वेरी के बाद क्वेरी किया जाता है यह निष्पादित किया जाएगा इस
SELECT accounts.account_name, contacts.first_name, contacts.last_name
FROM accounts
INNER JOIN contacts ON contacts.account_id = accounts.account_id
की तरह देखने की जरूरत होगी।
या, यदि उपयोगकर्ता ने "नाम, बिक्री" चुना है। फिर उपयोगकर्ता कॉलम daily_sales
पर एसयूएम फ़ंक्शन लागू करना चाहता है। और अंत में उपयोगकर्ता के लिए Sold On between '2014-01-01 00:00:00' AND '2014-10-01 00:00:00'
एक फिल्टर का चयन किया तो क्वेरी इस
SELECT accounts.account_name, SUM(daily_sales) AS daily_sales
FROM accounts
LEFT JOIN sales ON sales.account_id = accounts.account_id
WHERE sales.sold_on BETWEEN '2014-01-01 00:00:00' AND '2014-10-01 00:00:00'
GROUP BY accounts.account_name
तरह देखने के लिए के बाद क्वेरी किया जाता है यह निष्पादित किया जाएगा की आवश्यकता होगी।
मैं ऐसी क्वेरी कैसे उत्पन्न कर सकता हूं? क्या मुझे field_relations
तालिका में और कॉलम जोड़ने की आवश्यकता है?
मैं उपयोगकर्ता चश्मा को पकड़ने के लिए PHP फॉर्म बनाने के तरीके से चिंतित नहीं हूं लेकिन मैं यह समझने की कोशिश कर रहा हूं कि वे MySQL क्वेरी को सही तरीके से कैसे उत्पन्न करें?
आपकी सहायता और समय के लिए अग्रिम धन्यवाद।
हाय, सबसे पहले मैं आपको एक महान जानकारी के लिए धन्यवाद देना चाहता हूं। अब, यह मेरी समझ है कि मुझे निम्नलिखित 2 कॉलम 'accounts.account_name',' खाता नाम '(जो मेरे पास field_relation नामक तालिका में है) के साथ एक सरणी प्राप्त करने की आवश्यकता है। लेकिन ऐसी कुछ चीजें हैं जिन्हें मैं समझ नहीं पा रहा हूं आपके कोड में मुझे '$ orm' सरणी कहां मिलती है? मैं INNER या LEFT में शामिल होने का निर्णय कैसे ले सकता हूं? मैं इसे कैसे तैयार करूं? मुझे लगता है कि '$ टेबल' पोस्ट मूल्य '$ _POST ['फ़ील्ड']' होगा; अंत में, आपके पास {$ joinWith} है ...... वह क्या करता है? मैंने कभी भी {} का उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि उनके पीछे क्या विचार है। – Jaylen
मुझे घुंघराले ब्रैकेट का उपयोग करने का बिंदु मिला। मैंने संदर्भ के लिए इस प्रश्न का उपयोग किया http://stackoverflow.com/questions/2596837/curly-braces-in-string-in-php – Jaylen
मैंने आपको क्रेडिट दिया क्योंकि आपने मुझे वह सुराग दिया जो मुझे शुरू करने की आवश्यकता है। – Jaylen