(อธิบายเพิ่มเติม ข้อ 1 code คิวรี่ ตรง where statuspc = '2' คือ ข้อมูลที่ไม่มีในระบบ ให้ update เป็น statuspc = '2' ซึ่งมี ip address คนละวง lan ครับ)
ผมอยากทราบว่า ข้อ 1. code คิวรี่ ที่ผมคิวรี่ข้อมูลมาแสดงได้แล้ว และกรณีมี ip address อยู่คนละวง lan จะใส่เงื่อนไข if ip ให้อยู่ใน code คิวรี่เดิมยังไงหรอครับ
where status = 2
or left(ip,LOCATE('.', length(ip) - REVERSE(ip))) <> left('xxx.xxx.xxx.xxx', length('xxx.xxx.xxx.xxx') LOCATE('.', REVERSE('xxx.xxx.xxx.xxx')))
select
substring_index( ip, '.', 3 ) as SubIP
, count(ip) as GCount
from _iplist
where statuspc = 'หอยใหญ่ไหม?'
group by ( SubIP )
order by GCount desc
สิ่งที่ต้องการ คือ เมื่อคิวรี่ status = 2 ออกมาได้แล้ว / ตอบ คิวรี่ออกมาได้แล้ว
อยากจะแบ่ง group ip ที่ ต่างกัน ออกจาก กัน ใช่หรือไม่ / ตอบ ผมไม่ได้เอา group ip ออกจากกันครับ
แนะนำอ่าน WITH RECURSIVE ด้วยเลยครับ
ตัวอย่าง Code (SQL)
WITH RECURSIVE `taxonomy` AS (
SELECT * FROM `rdb_taxonomy_term_data`
WHERE `tid` IN (6,5)
UNION
SELECT `child`.*
FROM `rdb_taxonomy_term_data` AS `child`, `taxonomy` AS `parent`
WHERE `child`.`parent_id` = `parent`.`tid`
)
SELECT * FROM `taxonomy` ORDER BY `t_left` ASC
$sql = 'WITH `apm_bills_latest` AS (
SELECT `apm_bills`.*, ROW_NUMBER() OVER (PARTITION BY `room_id` ORDER BY `bill_date` DESC) AS `rn`
FROM `' . $this->tableName . '` AS `apm_bills`';
if (isset($options['billDateLessThan'])) {
$sql .= ' WHERE `apm_bills`.`bill_date` < :bill_date_lessthan';
$bindValues[':bill_date_lessthan'] = $options['billDateLessThan'];
}
$sql .= '
)
SELECT *
FROM `apm_bills_latest`
LEFT JOIN `' . $this->tableMeters . '` AS `apm_bill_meters` ON `apm_bills_latest`.`bill_id` = `apm_bill_meters`.`bill_id`
WHERE `rn` = 1';
$sql .= ' AND ...';
ip ใส่ให้กับแต่ละ location ครับ
ตอนนี้ใช้คำสั่งนี้ครับ ที่พี่ๆแนะนำ WHERE ip LIKE '10.183%' AND statuspc = '2
นำไปใช้แล้วใช้ได้ครับ ถ้า ip 10.150. ในคำสั่ง ไม่มี statuspc = 2 ข้อมูลคิวรี่จะเป็น 0 ครับ