Как я пишу простой запрос mysql в модели codeigniter

#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