INSERT INTO table_1 SELECT FROM table_2 WHERE condition ORDER BY来自表3的随机值(不是table_2)

时间:2017-03-28 23:12:50

标签: php mysql random mysqli

我有3张桌子:

表1是flux_zilnic: 表_2是tableta: tableta enter image description here 而table_3是birouri: birouri enter image description here

我有PHP代码:

function search_in_birouri()
    {
        $connection = db_connect();
        $query = mysqli_query($connection, "SELECT * FROM birouri WHERE disponibilitate = 'LIBER' AND locatie_actuala = 'Orhideea' AND pauza = '' AND closed_program = '' AND feedback = '' ORDER BY id ASC") or die(mysqli_error($connection));
        $row = mysqli_fetch_assoc($query);

        $username = $row['username'];
        $nr_birou = $row['nr_birou'];
        $disponibilitate = $row['disponibilitate'];
        $locatie_actuala = $row['locatie_actuala'];
        $pauza = $row['pauza'];
        $closed_program = $row['closed_program'];
        $feedback = $row['feedback'];
        $inregistrare_clienti = $row['inregistrare_clienti'];

        return array('username' => $username, 'nr_birou' => $nr_birou, 'disponibilitate' => $disponibilitate, 'locatie_actuala' => $locatie_actuala, 'pauza' => $pauza, 'closed_program' => $closed_program, 'feedback' => $feedback, 'inregistrare_clienti' => $inregistrare_clienti);
        unset($connection);
    }

function search_in_tableta()
    {
        $connection = db_connect();
        $query = mysqli_query($connection, "SELECT * FROM tableta WHERE locatie = 'Orhideea' ORDER BY `tableta`.`id` ASC") or die(mysqli_error($connection));
        $row = mysqli_fetch_assoc($query);

        $clientID = $row['clientID'];
        $nume_client = $row['nume_client'];
        $data_inregistrare = $row['data_inregistrare'];
        $ora_inregistrare = $row['ora_inregistrare'];
        $locatie = $row['locatie'];
        $status = $row['status'];

        return array('clientID' => $clientID, 'nume_client' => $nume_client, 'data_inregistrare' => $data_inregistrare, 'ora_inregistrare' => $ora_inregistrare, 'locatie' => $locatie, 'status' => $status);
        unset($connection);
    }

function start_working()
    {
        $username = cauta_in_birouri();
        $nr_birou = cauta_in_birouri();
        $disponibilitate = cauta_in_birouri();
        $paused = cauta_in_birouri();
        $closed_program = cauta_in_birouri();
        $feedback = cauta_in_birouri();
        $inregistrare_clienti = cauta_in_birouri();
        $clientID = cauta_urmatorul_client();
        $nume_client = cauta_urmatorul_client();
        $connection = db_connect();
        $data_curenta = date_create('');
        $ora_alocare = date_format($data_curenta, 'H:i');
        $username = $username['username'];
        $nr_birou = $nr_birou['nr_birou'];
        $clientID = $clientID['clientID'];
        $nume_client = $nume_client['nume_client'];
        $disponibilitate = $disponibilitate['disponibilitate'];
        $paused = $paused['pauza'];
        $closed_program = $closed_program['closed_program'];
        $feedback = $feedback['feedback'];
        $inregistrare_clienti = $inregistrare_clienti['inregistrare_clienti'];
        //
        if($nume_client == NULL)
        {
            //Salveaza in log
            $linie_text = "NU DETECTEZ NICIUN CLIENT ÎNREGISTRAT ÎN ORHIDEEA";
            $new_line = "==> ";
            $handle = fopen('loguri/actiuni_comandate.txt','a+');
            fwrite($handle, $new_line . $linie_text . " (" . $ora_alocare . ")" . "<br>" . "\r\n");
            fclose($handle);
        } else if($nume_client != NULL && $disponibilitate == 'LIBER' && $paused == NULL && $closed_program == NULL && $feedback == NULL && $inregistrare_clienti == NULL)
        {
            $query = mysqli_query($connection,"
                INSERT INTO `flux_zilnic` (motiv,nume_client,clientID,data_inregistrare,ora_inregistrare,status_alocare,ora_alocare,status_preluare,ora_preluare,status_rezolvare,ora_rezolvare,operator,birou,fisa_service,locatie_actuala,fise_cu_probleme,observatii,status)
                SELECT  '',nume_client,clientID,data_inregistrare,ora_inregistrare,'ALOCAT','$ora_alocare','','','','','$username','$nr_birou','',locatie,'','',status
                FROM `tableta` WHERE locatie = 'Orhideea' ORDER BY id ASC LIMIT 1") or die("NU AM ALOCAT URMĂTORUL CLIENT DEOARECE: <br>" . mysqli_error($connection));

            $queryTwo = mysqli_query($connection,"UPDATE `birouri` SET `disponibilitate` = 'OCUPAT' WHERE username = '$username'") or die("ÎN ORHIDEEA NU AM SCHIMBAT BIROUL ÎN STATUS OCUPAT, DEOARECE: <br>" . mysqli_error($connection));

            $queryThree = mysqli_query($connection,"DELETE FROM `tableta` WHERE locatie = 'Orhideea' ORDER BY id ASC LIMIT 1") or die("ÎN ORHIDEEA NU AM ȘTERS CLIENTUL DE PE TABLETĂ DIN CAUZA UNEI ERORI: <br>" . mysqli_error($connection));

            if($query && $queryTwo && $queryThree) 
            {
                //Salveaza in log
                $linie_text = "AM ALOCAT CLIENTUL " . $nume_client . " CĂTRE " . $username . " ÎN ORHIDEEA";
                $new_line = "==> ";
                $handle = fopen('loguri/actiuni_comandate.txt','a+');
                fwrite($handle, $new_line . $linie_text . " (" . $ora_alocare . ")" . "<br>" . "\r\n");
                fclose($handle);
            }
        } else
        {
            //Salveaza in log
            $linie_text = "NU ESTE DISPONIBIL NICIUN BIROU ÎN ORHIDEEA. NU POT SĂ ALOC CLIENTUL " . $nume_client;
            $new_line = "==> ";
            $handle = fopen('loguri/actiuni_comandate.txt','a+');
            fwrite($handle, $new_line . $linie_text . " (" . $ora_alocare . ")" . "<br>" . "\r\n");
            fclose($handle);
        }
        unset($connection);
    }

根据$query的{​​{1}},我从表2和表3中获取值,并将它们放在表1中。

正如您在start_working()中看到的,此函数返回表3 search_in_birouri()中的值。

这意味着接下来会发生:  1.函数ORDER BY id ASC - start_working()将复制table_2中的所有值,并仅复制table_3中的$querynr_birou,并将它们放在table_1中。  2.函数username - start_working()将更新table_3 ...  3.函数$queryTwo - start_working()将从table_2中删除一行

一切正常,没有问题。

除了我想从table_3中选择一个随机$queryThree(以及属于它的用户名)并将其放在table_1中并与table_2中的值结合使用。

我该怎么做?如何将table_2中的值从table_3中随机$nr_birounr_birou复制到table_1?

我真的,真的想尽力解释。

0 个答案:

没有答案