ไม่สามารถเพิ่ม Group by with Range ใน zf2 ได้

ฉันมีคำถามซึ่งใช้งานไม่ได้ แสดงคอลัมน์ที่ไม่รู้จัก คำถามของฉันใน zend Framework 2

$select = new Select('dining_table_reservation');
        $select->columns(array('range'=>new \Zend\Db\Sql\Expression("CONCAT(5*floor(dining_table.SeatingCapacity/5),'-',5*floor(dining_table.SeatingCapacity/5) + 5)"),'Avgtime'=>new \Zend\Db\Sql\Expression('avg(timestampdiff(SECOND, '.$dtr.'.StartTime, '.$dtr.'.EndTime))')));
        $select->join($dt, "$dtr.TableId=$dt.TableId", array('SeatingCapacity'),'INNER');
        $select->group(1);
        $select->order($dt.'.SeatingCapacity');

คำถามของฉันดู

SELECT CONCAT(5*floor(dining_table.SeatingCapacity/5),'-',5*floor(dining_table.SeatingCapacity/5) + 5) AS "range", avg(timestampdiff(SECOND, dining_table_reservation.StartTime, dining_table_reservation.EndTime)) AS "Avgtime", "dining_table"."SeatingCapacity" AS "SeatingCapacity" FROM "dining_table_reservation" INNER JOIN "dining_table" ON "dining_table_reservation"."TableId"="dining_table"."TableId" GROUP BY "1" ORDER BY "dining_table"."SeatingCapacity" ASC

มันแสดงข้อผิดพลาด:

"ไม่สามารถดำเนินการคำสั่งได้ (42S22 - 1,054 - คอลัมน์ที่ไม่รู้จัก '1' ใน 'คำสั่งกลุ่ม')"

ฉันควรทำอย่างไรดี ?


person Mujaheed Sayyed    schedule 17.12.2015    source แหล่งที่มา


คำตอบ (1)


คุณไม่มีคอลัมน์ 1 ในตารางในฐานข้อมูล คุณต้องตั้งค่าคอลัมน์ที่มีอยู่สำหรับจัดกลุ่มตาม คุณสามารถแสดงโครงสร้างฐานข้อมูลได้หรือไม่?

person Naumov    schedule 17.12.2015
comment
ถ้าฉันเพิ่มชื่อคอลัมน์ ผลลัพธ์ของการสืบค้นก็จะเปลี่ยนไป มันไม่ได้ให้ผลลัพธ์ที่ร้องขอ - person Mujaheed Sayyed; 17.12.2015
comment
สิ่งที่คุณต้องการได้รับจากฐานข้อมูล? - person Naumov; 17.12.2015
comment
ช่วง เวลาเฉลี่ย ขนาด 0-5 1800.0000 2 5-10 2200.0000 8 - person Mujaheed Sayyed; 17.12.2015
comment
หากเราเพิ่มชื่อคอลัมน์ใด ๆ แสดงว่าไม่ได้จัดกลุ่มช่วงที่กำหนด - person Mujaheed Sayyed; 17.12.2015
comment
ถ้าฉันเรียกใช้แบบฟอร์มแบบสอบถาม phpmyadmin โดยตรง มันก็ทำงานได้อย่างถูกต้อง แต่ใน zf2 มันเกิดข้อผิดพลาด - person Mujaheed Sayyed; 17.12.2015
comment
ลอง (int)1 นำไปสู่ประเภทจำนวนเต็มหรือลองดำเนินการค้นหา sql ดั้งเดิม $select->group((int)1); - person Naumov; 17.12.2015