2015-07-04 10 views
10

मुझे ड्रूपल में विशिष्ट श्रेणियों (मंचों) की एक सरणी में पोस्ट किए गए सभी संदेशों (प्रथम पोस्ट और उत्तरों) का चयन करने की आवश्यकता है।Drupal: MySQL एक विशिष्ट मंच से संबंधित सभी पोस्टों को चुनें

प्रथम पोस्ट field_data_body में संग्रहीत हैं, उत्तर field_data_comment_body में संग्रहीत हैं।

field_data_body और field_data_comment_body की संरचना वहाँ पोस्ट की सामग्री है और स्तंभ entity_id उनके अद्वितीय ID में स्तंभ body_value में, एक ही है।

तालिका field_data_taxonomy_forums में entity_id कॉलम और taxonomy_forums_tid कॉलम (जो फ़ोरम श्रेणियों की आईडी हैं) शामिल हैं। तालिका taxonomy_term_data कॉलम tid (जो taxonomy_forums_tid का एक ही और description स्तंभ (जो मंच श्रेणी का शीर्षक) है

तो, शामिल हैं। मैं एक प्रश्न है कि मुझे के शरीर चुनने की अनुमति देता के लिए देख रहा हूँ पोस्ट (पहले पोस्ट और उत्तरों दोनों) और tid एस (यानी फोरम श्रेणियों की आईडी) की एक सरणी निर्दिष्ट करने वाले फोरम का विवरण, कि मैं मैन्युअल रूप से taxonomy_term_data तालिका में पाउंगा।

तो, उदाहरण के लिए मैं क्वेरी की तलाश में हूं जो मुझे "संबंधित" पदों को tid s 1456,7622,862 और सापेक्ष tid विवरण चुनने की अनुमति देता है । enter image description here

उत्तर

4

मुझे लगता है कि मदद करता है, यह बेहतर होगा हमें 2 उप-कार्य में कार्य विभाजित करने के लिए के लिए:

  1. , पदों के शव का पता लगाएं एक विशेष टीआईडी ​​से संबंधित।
  2. किसी विशेष बोली से संबंधित शरीर की सभी टिप्पणियां पाएं।

हम इन तालिकाओं का उपयोग करना होगा:

  1. field_data_taxonomy_forums
  2. field_data_body
  3. टिप्पणी
  4. field_data_comment_body

डेटाबेस संरचना:

Database structure

निकायों

SELECT 
    taxonomy_forums.taxonomy_forums_tid AS tid, 
    body.entity_id, 
    body.body_value AS body 
FROM 
    field_data_taxonomy_forums AS taxonomy_forums 
INNER JOIN 
    field_data_body AS body 
ON 
    body.entity_id=taxonomy_forums.entity_id 
WHERE 
    taxonomy_forums.taxonomy_forums_tid IN (9); 

ढूँढना निकायों

यहाँ हम टिप्पणियों तालिका की आवश्यकता होगी, कि field_data_body और field_data_comment_body को एकजुट करती है के लिए टिप्पणियों ढूँढना।

SELECT 
    taxonomy_forums.taxonomy_forums_tid AS tid, 
    comment_body.entity_id, 
    comment_body.comment_body_value AS body 
FROM 
    field_data_taxonomy_forums AS taxonomy_forums 
INNER JOIN 
    field_data_body AS body 
ON 
    body.entity_id=taxonomy_forums.entity_id 
INNER JOIN 
    comment 
ON 
    comment.nid=body.entity_id 
INNER JOIN 
    field_data_comment_body AS comment_body 
ON 
    comment_body.entity_id=comment.cid 
WHERE 
    taxonomy_forums.taxonomy_forums_tid IN (9); 

यदि आप इन 2 प्रश्नों को यूनियन करते हैं, तो आपको पोस्ट और टिप्पणियों की सूची मिल जाएगी।

sqlfiddle

+0

बिल्कुल सही। 12 घंटे में बाउंटी पुरस्कार। :-) – MultiformeIngegno

1

आप "मंच" तालिका के उपयोग (। तालिका मंच शब्दों के लिए नोड्स के संबंध स्थापित करने) यह भी ध्यान दिया जाना चाहिए जोड़ना होगा मंच आईडी के संदर्भ में देखने के लिए:

यहाँ field_data_body तालिका का एक स्क्रीनशॉट है वह फ़ोरम आईडी मौजूद नहीं है, यह एक वर्गीकरण आईडी है। यहाँ वर्गीकरण आईडी (टीआईडी)

SELECT * FROM field_data_body fdb 
LEFT JOIN forum f ON f.nid = fdb.entity_id 
WHERE fdb.bundle="forum" AND f.tid=15 

ध्यान दें कि मंच मॉड्यूल टिप्पणी कोर मॉड्यूल जो साथ काम करता है के द्वारा केवल पहला संदेश विषय पाने के लिए एक उदाहरण है इसका मतलब है कि केवल पहले विषय संदेश "field_data_body" और सभी उत्तर में संग्रहित है "field_data_comment_body" तालिका में संग्रहीत हैं।

आशा है कि यह

+0

राइट जब आप पोस्ट कर रहे थे मैं सवाल का संपादन किया गया था और अधिक विवरण क्योंकि मैं थोड़ा – MultiformeIngegno

+0

जांच जोड़ने के लिए और उत्तर (शामिल होने field_data_comment_body) भी जोड़ने के लिए? – MultiformeIngegno

+0

आप सीधे "field_data_comment_body" पर शामिल नहीं हो सकते हैं, आपको सही टिप्पणी इकाई आईडी प्राप्त करने के लिए पहले "टिप्पणी" तालिका में शामिल होना चाहिए। – Rouk

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