วิธีเขียนแบบสอบถาม Drupal 7 ด้วยคุณสมบัติ“ count” และ“ having”


14

ฉันไม่สามารถทำให้แบบสอบถามต่อไปนี้ทำงานได้ตามมาตรฐาน drupal7 .. ใครช่วยฉันได้บ้าง มันเร่งด่วนเล็กน้อย ...

SELECT n.nid AS nid, n.title AS title, count(n.title) AS ncount 
FROM node n 
INNER JOIN taxonomy_index tn ON n.nid = tn.nid 
WHERE (n.type = 'test') 
AND (tn.tid IN( 23,37)) 
AND (n.title LIKE '%name%') 
AND (n.status = 1) 
GROUP BY n.nid 
HAVING ncount = 2

คำตอบ:


25

นี่เป็นส่วนหัวของฉันดังนั้นโปรดใช้ความระมัดระวัง ...

$query = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->condition('n.type', 'test')
  ->condition('tn.tid', array(23, 37))
  ->condition('n.title', '%' . db_like('name') . '%', 'LIKE')
  ->condition('n.status', 1)
  ->groupBy('n.nid');

// Add the COUNT expression
$query->addExpression('COUNT(n.title)', 'ncount');

// Add the HAVING condition
$query->havingCondition('ncount', 2);

// Add the JOIN
$query->join('taxonomy_index', 'tn', 'n.nid = tn.nid');

$results = $query->execute();

ขอบคุณไคลฟ์! องค์ประกอบทั่วไปเพิ่มเติมหนึ่งอย่าง: เพื่อจัดเรียงตามจำนวนที่ฉันเพิ่มเข้าไป$query->orderBy('ncount', 'DESC');
greggles
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.