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

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

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

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

by pond » 28/09/2016 4:06 pm

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

Code: Select all

echo $query->__toString();
แล้วเอา code นั้นไปลอง ในฐานข้อมูลดูว่าถูกรึเปล่าถ้าไม่ถูกให้ลองจากฐานข้อมูลให้ได้ตามต้องการก่อนแล้วค่อยมาใช้ใน joomla

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

Code: Select all

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

Code: Select all

$query->from($db->qn('#__zzz_track', 'a'));
แทน GROUP BY

Code: Select all

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

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

by tsukasaz » 27/09/2016 11:09 pm

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

GROUP BY com_name AS version
3. ลองเขียนแบบ sql ธรรมดา ให้ผ่านก่อน ค่อยมาแปลงเป็นแบบ Joomla ครับ

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

by pond » 27/09/2016 8:29 pm

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

Code: Select all

     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'));

Top