Несколько MySQL запрос в CI - PullRequest
       1

Несколько MySQL запрос в CI

0 голосов
/ 13 сентября 2018

Там у меня есть несколько запросов и я хочу выполнить их в Codeigniter. Ниже приведен код, который я пробовал.

  function seememberfilter($course,$n)
        {


        $this->load->database();
        $sql = array();
        $sql[] = "CREATE TEMPORARY TABLE temp1";
        $sql[] = "select id,rand, name,lname, email,phone from `member` where course like ('%$course%')";
        $sql[] = "CREATE TEMPORARY table temp2";
        $sql[] = "select distinct t.id,t.rand, t.name,t.lname, t.email,t.phone, a.quest_id from temp1 t left join assignment a on t.rand= a.rand";
        $sql[] = "CREATE TEMPORARY table randid";
        $sql[] = "select rand, quest_id from temp2 where quest_id=$n";
        $sql[] = "select t.id,t.rand, t.name,t.lname, t.email,t.phone, r.quest_id from temp1 t left join randid r on t.rand= r.rand";

         foreach ($sql as $sql_command)
            {    
                if ($debugging == 0)
                {
                    $this->db->query($sql_command);
                } 
                elseif ($debugging == 1)
                {
                    echo $sql_command;
                } 
            } 
return $query->result();

        }

Код выше в модели, а код ниже в контроллере

 public function assign(){
            $this->load->model("user_model");
            $course=$this->input->post('course');
            $n=$this->input->post('id');
            $data['sel'] = $this->user_model->seememberfilter($course,$n);  
            $this->load->view('assign',$data);
        }

MySQL-запрос хорошо выполняется в phpmyadmin. Я проверил это

Что я хочу: Я хочу успешно выполнить запрос MySQL в CI.

Я редактирую это и даю вам полные данные таблицы sql

DROP TABLE IF EXISTS `member`;
CREATE TABLE IF NOT EXISTS `member` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rand` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `lname` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `dob` varchar(255) NOT NULL,
  `course` text NOT NULL,
  `gender` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `city` varchar(255) NOT NULL,
  `state` varchar(255) NOT NULL,
  `zip` varchar(255) NOT NULL,
  `comment` text NOT NULL,
  `Aboutme` text NOT NULL,
  `dat` varchar(255) NOT NULL,
  `tim` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;



INSERT INTO `member` (`id`, `rand`, `email`, `name`, `lname`, `phone`, `dob`, `course`, `gender`, `address`, `city`, `state`, `zip`, `comment`, `Aboutme`, `dat`, `tim`) VALUES
(1, 'jrf20180961828', 'kk122344545@hotmail.com', 'Kishan', 'Yadav', '9717111111', '2018-09-01', 'paper first,Political Science,Philosophy,', 'male', 'Diamond Auto Mobiles', 'Belthara road', 'ballia', '221715', 'Good person.', '', '06-09-2018', '11:24:16pm'),
(2, 'jrf20180914721', 'kk1@gmail.com', 'Rohan', 'Yadav', '9717111111', '2018-09-01', 'paper first,Philosophy,History,', 'male', 'Diamond Auto Mobiles', 'Belthara road', 'ballia', '221715', 'Good Person.', '', '06-09-2018', '11:25:44pm'),
(5, 'jrf20180958284', 'ykishan94612121@gmail.com', 'kiran', 'Singh', '9717111111', '2018-07-07', 'paper first,Political Science,History,', 'female', 'Diamond Auto Mobiles', 'Belthara road', 'ballia', '221715', 'nnbmnm', '', '10-09-2018', '10:11:34pm'),
(4, 'jrf20180932851', 'kk12@gmail.com', 'Pankaj', 'Yadav', '9717111111', '2018-09-01', 'paper first,Philosophy,Psychology,History,', 'male', 'Diamond Auto Mobiles', 'Belthara road', 'ballia', '221715', 'nmbmbn', '', '10-09-2018', '10:10:19pm'),
(6, 'jrf20180929250', 'hjh@gmail.com', 'John', 'Corter', '9717111111', '2018-09-06', 'paper first,History,', 'male', 'Diamond Auto Mobiles', 'Belthara road', 'ballia', '221715', 'sxs', '', '11-09-2018', '12:09:49am');
COMMIT;

И второй стол

DROP TABLE IF EXISTS `assignment`;
CREATE TABLE IF NOT EXISTS `assignment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rand` varchar(255) NOT NULL,
  `course` varchar(255) NOT NULL,
  `quest_id` varchar(255) NOT NULL,
  `time` varchar(255) NOT NULL,
  `date` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;



INSERT INTO `assignment` (`id`, `rand`, `course`, `quest_id`, `time`, `date`) VALUES
(1, 'jrf20180914721', 'paper first', '2', '10:05:48pm', '2018-09-10'),
(2, 'jrf20180961828', 'paper first', '2', '10:06:49pm', '10-09-2018'),
(3, 'jrf20180914721', 'History', '2', '10:08:03pm', '10-09-2018'),
(4, 'jrf20180958284', 'History', '2', '10:12:05pm', '10-09-2018'),
(5, 'jrf20180914721', 'paper first', '1', '10:19:23pm', '10-09-2018'),
(6, 'jrf20180932851', 'History', '3', '12:07:48am', '11-09-2018');
COMMIT;

И мой вывод должен быть примерно таким, я соединяю две таблицы, чтобы получить этот вывод. Прикрепленное изображение моего вывода

Я получаю этот вывод, используя запрос выше. Извините за мой английский.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать транзакцию для разделения выполнения запроса

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete(); 
0 голосов
/ 13 сентября 2018

После чата в db-fiddle:

select distinct t.id, t.rand, name, lname, email, phone, if(quest_id='2','2',NULL) as quest-id
from `member` t
left join assignment a on t.rand= a.rand
where t.course like '%History%'
    and (a.course like '%History%') or a.id is null

Участник ограничен курсом, назначением того же курса, квестом (ионом) _id 2, если он был найден, в противном случае оставьте поле как NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...