@Set89
Web/Android developer

Объединение Select запросов в один?

Есть таблица:
id | user | summ | time
33 | u123 | 350 | 1000
.....
22 | u123 | 200 | 850
......
11 | u123 | 50 | 650
......


Есть рабочий код:
$res = mysql_query("SELECT * FROM tb_history WHERE status='0'");			
while($main=mysql_fetch_array($res)){
   $id_user = $main["id_user"];    // u123
   $times = $main["time"];    // 1200
   .....

   $res2=mysql_query("SELECT * FROM tb WHERE user='$id_user' AND time<'$times' ORDER BY id DESC"); 
   while($row_tb=mysql_fetch_array($res2)){
      $us_id=$row_tb["id"];    // 33
      $_time=$row_tb["time"];    // 1000
					
      $res3=mysql_query("SELECT * FROM tb WHERE user='$id_user' AND time<'$_time' ORDER BY id DESC LIMIT 1"); 
      $row_tb=mysql_fetch_array($res3);
      $us_id=$row_tb1["id"];    // 22
      $i_time = $row_tb1["time"];    // 850
	
     $i_time3 = $_time - $i_time;    // 1000 - 850
     .....
   }
}


Как правильно все объединить в один запрос или хотя бы res2 и res3?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
union или join в зависимости от ситуации, я так понимаю $res2 и $res3 запросто объединяются через UNION, а res1 к ним, через JOIN
https://www.w3schools.com/sql/sql_union.asp
https://www.w3schools.com/sql/sql_join.asp
Ответ написан
@hurgadan
А что вы хотите вообще сделать? Для чего нужен $res3?
В $res2 и $res3 user_id - один и тот же. Делая выборку $res2 с условием time<$times вы уже получаете все тоже самое что будет и в $res3, потому что $_time всегда будет меньше чем $times (time<$times). $res3 тут не нужен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы