#php #mysql #codeigniter #model-view-controller #model
Вопрос:
SELECT DISTINCT
SUBSTRING_INDEX(SUBSTRING_INDEX(process_disposition.sub_dispo, ',', numbers.n), ',', -1) name
FROM
(SELECT 1 n UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4) numbers INNER JOIN process_disposition
ON CHAR_LENGTH(process_disposition.sub_dispo)
-CHAR_LENGTH(REPLACE(process_disposition.sub_dispo, ',', ''))>=numbers.n-1
Комментарии:
1. Я хочу написать это в модели фреймворка Codeigniter 3
Ответ №1:
Вы можете написать это так
$query = $this->db->query("
SELECT DISTINCT SUBSTRING_INDEX
(SUBSTRING_INDEX(process_disposition.sub_dispo, ',', numbers.n), ',', -1)name FROM
(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4)numbers
INNER JOIN process_disposition ON CHAR_LENGTH(process_disposition.sub_dispo)
-CHAR_LENGTH(REPLACE(process_disposition.sub_dispo, ',', ''))>=numbers.n-1"
);
if ($query->num_rows() > 0) {
return $query->result();
} else {
return false;
}
Ответ №2:
Это должно сработать.
$this->db->select("DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(process_disposition.sub_dispo, ',', numbers.n), ',', -1) name");
$this->db->from("(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) numbers")
$this->db->join("process_disposition", "CHAR_LENGTH(process_disposition.sub_dispo)-CHAR_LENGTH(REPLACE(process_disposition.sub_dispo, ',', ''))>=numbers.n-1", "INNER");
$result = $this->db->get();
Комментарии:
1. когда я использую это нежелательное пространство, оно автоматически включается в запрос, см. echo $this->db->>last_query(); это дало мне
2. Выберите особым SUBSTRING_INDEX(SUBSTRING_INDEX(process_disposition.sub_dispo, ‘, ‘, цифр.Н), ‘, ‘, -1) sub_dispo из (выбрать 1 н объединить все выбрать 2 объединить все выбрать 3 объединить все выбрать 4) цифры внутреннее соединение
process_disposition
на CHAR_LENGTH(process_disposition.sub_dispo)-CHAR_LENGTH(замены(process_disposition.sub_dispo, ‘,’, «))>=цифры.Н-1