0

1 から 10,000 の間でランダムに生成された 10,000 個の値の 2 つのデータセットが必要で、データセット間で共通する値のみを見つける必要があります。次に、それらを最小から最大に並べ替える必要があります。array_intersect() または array_unique() を使用できません。

while ループを使用して両方の MySQL テーブルのランダムな整数を生成し、MySQL クエリを使用してそれらを比較およびソートすることで、これを達成できたようです。ただし、結果が正確かどうかは完全にはわかりません。このタスクを完了するためのより効率的な方法を探しています。私が自分のタスクを正常に完了しているかどうか、またこれを解決する別の方法は何か教えてください。Select ステートメントが正しい結果を生成しているかどうか、およびそれを改善する方法を知る必要があります。

 <?php
// CONNECT TO THE DATABASE
$DB_NAME = 'e3';
$DB_HOST = 'localhost';
$DB_USER = 'e3';
$DB_PASS = 'exercise3password';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
       $x = 0;
        while($x <= 10000){
        $randa = rand(1,10000);
        $randb = rand(1,10000);
$query = "INSERT into a (num) VALUES ($randa)";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$query = "INSERT into b (num) VALUES ($randb)";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$x++;
}

$query = "SELECT * FROM a INNER JOIN b on a.num=b.num WHERE a.num=b.num ORDER BY a.num";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
// GOING THROUGH THE DATA
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo stripslashes($row['num']); 
echo "<br>";
}
}
else {
echo 'NO RESULTS';  
}
// CLOSE CONNECTION
mysqli_close($mysqli);

?>
4

1 に答える 1