ลบกวนถามหน่อยครับ Joomla เรียกใช้ count ยังไงหรอครับ

ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
pond
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 571
ลงทะเบียนเมื่อ: 25/05/2016 9:44 am

ลบกวนถามหน่อยครับ Joomla เรียกใช้ count ยังไงหรอครับ

โพสต์โดย pond » 27/09/2016 8:29 pm

ลบกวนถามหน่อยครับ Joomla เรียกใช้ count ยังไงหรอครับคือตอนนี้ผม group by ได้อย่างเดียว แต่ไม่รู้จะเก็บตัวแปลไปใช้ฝั่ง view ยังไงครับช่วยทีครับเลยอยากรุ้ว่าเขียนแบบนี้ถูกมั้ยครับหรือควรปรับตรงไหนหรือมีข้อแนะนำดีๆ
นี่codeในส่วนของ model คับ

โค้ด: เลือกทั้งหมด

     protected function getListQuery() {
        $db = $this->getDbo();
        $query = $db->getQuery(true);
        $query->select( array('com_name', 'version','COUNT(*) as count_rec') );
        $query->from($db->quoteName('#__zzzz_track', 'a'));
        $query->group($db->quoteName('com_name','version'));

ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 6067
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: ลบกวนถามหน่อยครับ Joomla เรียกใช้ count ยังไงหรอครับ

โพสต์โดย tsukasaz » 27/09/2016 11:09 pm

1. แทนที่จะเขียน

โค้ด: เลือกทั้งหมด

$db->quoteName() 
เขียนสั้นๆ ได้ เปลี่ยนเป็น

โค้ด: เลือกทั้งหมด

$db->qn() 


2. อันนี้ผมงง :lol: น่าจะใช้ผิดนะ มันใช้เป็น ตัวแรก ชื่อคอลัมน์ ตัวที่สอง คือ ชื่อแทน (AS) http://www.w3schools.com/sql/sql_alias.asp

โค้ด: เลือกทั้งหมด

$query->group($db->quoteName('com_name','version')); 
ผลลัพท์ที่ได้คือ

โค้ด: เลือกทั้งหมด

GROUP BY com_name AS version


3. ลองเขียนแบบ sql ธรรมดา ให้ผ่านก่อน ค่อยมาแปลงเป็นแบบ Joomla ครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)

ภาพประจำตัวสมาชิก
pond
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 571
ลงทะเบียนเมื่อ: 25/05/2016 9:44 am

Re: ลบกวนถามหน่อยครับ Joomla เรียกใช้ count ยังไงหรอครับ

โพสต์โดย pond » 28/09/2016 9:53 am

ขอบคุณคับ

ภาพประจำตัวสมาชิก
pond
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 571
ลงทะเบียนเมื่อ: 25/05/2016 9:44 am

Re: ลบกวนถามหน่อยครับ Joomla เรียกใช้ count ยังไงหรอครับ

โพสต์โดย pond » 28/09/2016 4:06 pm

ได้แล้วครับ
วิธีเช็คว่า select แบบธรรมดาว่าทำถูกรึเปล่า ให้เอา query มา echo ก่อนที่จะรีเทริน มาดูก่อนครับ

โค้ด: เลือกทั้งหมด

echo $query->__toString();

แล้วเอา code นั้นไปลอง ในฐานข้อมูลดูว่าถูกรึเปล่าถ้าไม่ถูกให้ลองจากฐานข้อมูลให้ได้ตามต้องการก่อนแล้วค่อยมาใช้ใน joomla

ยกตัวอย่างจากโจทย์ ให้แสดง ชื่อคอม คอมมีกี่เวอร์ชั่น คอมกี่โดเมน *(ใช้ distinct หาชื่อที่ซ้ำ count หาว่ามีกี่ตัว)
แทน SELECT

โค้ด: เลือกทั้งหมด

$query->select('com_name,COUNT(DISTINCT(version)) as countversion,COUNT(DISTINCT(domain)) as countdomain');

แทน FROM

โค้ด: เลือกทั้งหมด

$query->from($db->qn('#__zzz_track', 'a'));

แทน GROUP BY

โค้ด: เลือกทั้งหมด

$query->group($db->qn('com_name'));


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน