mslilafowler Ответов: 0

Как я могу сохранить переменные между несколькими SQL-запросами (без вложенности запросов)?


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

Я слышал, что вложенность замедляет программу, и что она излишне многословна, и вообще плохая практика. Я слышал о "join" и "left join", но понятия не имею, как применить их в Примере или как преобразовать что-то вроде следующего кода в оператор "join".
Может ли кто-нибудь сказать мне, как перестроить мой код, используя лучшие практики?

Что я уже пробовал:

/*First SQL query:*/
	$sql1 = "SELECT * FROM (select * from my_table WHERE id < $id ORDER BY id DESC LIMIT 1) AS x ORDER BY id LIMIT 1";
	$result1 = mysqli_query($conn, $sql1);
	$resultCheck1 = mysqli_num_rows($result1);
	if ($resultCheck1 > 0) {
		while ($row1 = mysqli_fetch_assoc($result1)) {
			$sum1 = $row1['sum'];
			/*Second SQL query:*/
			$sql2 = "SELECT * FROM (select * from my_table WHERE id = $id ORDER BY id DESC LIMIT 1) AS x ORDER BY id LIMIT 1";
			$result2 = mysqli_query($conn, $sql2);
			$resultCheck2 = mysqli_num_rows($result2);
			if ($resultCheck2 > 0) {
				while ($row2 = mysqli_fetch_assoc($result2)) {
					$sum2 = $row2['sum'];
					/*Third SQL query:*/
					$sql3 = "SELECT * FROM new_table"; /*Different table*/
					$result3 = mysqli_query($conn, $sql3);
					$resultCheck3 = mysqli_num_rows($result3);
					if ($resultCheck3 > 0) {
						while ($row3 = mysqli_fetch_assoc($result3)) {
							$sum3 = $row3['sum'];
							echo $sum1 + $sum2 + $sum3;
						}
					}
				}
			}
		}
	}

0 Ответов