sql >> Database teknologi >  >> RDS >> Mysql

Dynamisk rækkevidde under hentning af poster fra databasen

undskyld mit dårlige engelsk:Her havde jeg svaret på dette spørgsmål Sådan viser du data fra databasen med dynamisk rækkevidde . Lad mig igen prøve at besvare dette spørgsmål. Først for at vi ikke skal arbejde på mysql-forespørgsel.

MySql Work:

I mysql-forespørgslen har du ikke spurgt efter ordre pr. Fordi i det virkelige liv, kan du ikke forvente, at efter alle toms optegnelser, vil regninger rekord være der. Tag for eksempel følgende indsættelse.

INSERT INTO test_work(ename, sal) VALUES("tom", 100), ("bill", 450), ("bill", 100), ("tom", 200), ("bill" ", 250), ("bill", 400), ("James", 50);SELECT * FROM test_work; 

Resultat:

+-------+------+| navngive | sal |+-------+------+| tom | 100 || regning | 450 || regning | 100 || tom | 200 || regning | 250 || regning | 400 || James | 50 |+-------+------+

Så din mysql-forespørgsel skal være rækkefølge efter ename. Her også hver persons sal skal bestilles. Så vores forespørgsel:

VÆLG * FRA emp BESTIL VED ename, sal; 

KODNING:

  1. Hele opgaven kan vi dele op i 3 dele.
    1. Mysql-datahentning og lagring i array.
    2. Beregning af rækkevidde
    3. Udskrivning

MySql Datafetching:

Under datahentning fra mysql-serveren bør vi altid prøve at bruge mysql_fetch_assoc-funktionen i stedet for mysql_fetch_array. Fordi mysql_fetch_assoc kun vil returnere ename og sal. Men mysql_fetch_array vil returnere array med indekser ename, sal, 0, 1.

 # opret forbindelse til mysql-server # og vælg den database, som # vi vil arbejde på. $conn =mysql_connect('', 'rod', ''); $db =mysql_select_db('test'); # Forespørg dataene fra databasen. $query ='VÆLG * FRA test_work ORDER BY ename, sal'; $result =mysql_query($query); # Intialiser arrayet, som vil # gemme de hentede data. $sal =matrix(); $emp =array(); # Loop over alle de hentede data, og gem # data i array. while($row =mysql_fetch_assoc($result)) {array_push($emp, $row['ename']); array_push($sal, $row['sal']); } 

Beregning af rækkevidde:

 # Intialiser arrayet, som gemmer # rækkevidden for brugeren. $arr =matrix(); # loop over hele sal-arrayet for ($i =0; $i  

når du vil print_r arr-arrayet vil outputtet være:

Array( [bill] => Array ( [rowspan] => 4 [printed] => no ) [James] => Array ( [rowspan] => 1 [printed] => no ) [tom ] => Array ( [rowspan] => 2 [printede] => nej )) 

Udskrivning med rækkevidde:

 echo ""; for($i=0; $i "; # Hvis denne række ikke udskrives, så udskriv. # og sæt den udskrevne værdi til "ja", så # næste gang den ikke udskrives. if ($arr[$empName]['printed'] =='no') { echo ""; $arr[$empName]['printed'] ='ja'; } echo ""; echo ""; } echo "
Ename Sal
".$empName." ".$sal[$i]."
";

Kodeoptimering:

Nu kan vi kombinere rækkeviddeberegningen og mysql-datahentning. For under lagring af de hentede data i array kan vi beregne rækkevidden. Så vores sidste kode:

       Ename Sal "; for($i=0; $i "; # Hvis denne række ikke udskrives, så udskriv. # og sæt den udskrevne værdi til "ja", så # næste gang den ikke udskrives. if ($arr[$empName]['printed'] =='no') { echo "".$empName." "; $arr[$empName]['printed'] ='ja'; } echo "".$sal[$i].""; echo ""; } echo ""; ?>  

Resultat:



  1. mysql database automatisk partitionering

  2. Indsamlingsmetode:UDVID Procedure i Oracle-databasen

  3. Lær databasedesign med SQL Server Management Studio (SSMS) – Del 2

  4. Facebook user_id :big_int, int eller string?