Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Несколько SELECT в один
 
 автор: Jaroslav   (18.02.2011 в 12:38)   письмо автору
 
 

Добрый день.

Подскажите, пожалуйста, можно ли объединить в один SELECT такие независимые выборки из разных таблиц? И есть ли в этом смысл? Не нашёл на форуме... UNION, вроде как не подходит..



  $query1 = "SELECT * FROM table1 WHERE (id='25') ORDER BY id DESC";
  $auth1 = mysql_query($query1);
  $reed1= mysql_fetch_array($auth1);

  $query2 = "SELECT * FROM table2 WHERE (id='2524')";
  $auth2 = mysql_query($query2);
  $reed2= mysql_fetch_array($auth2);

  $query3 = "SELECT * FROM table3 WHERE ((text='werwer') AND (next='234')) ORDER BY id DESC";
  $auth3 = mysql_query($query3);
  $reed3= mysql_fetch_array($auth3);




Можно такие запросы переписать более оптимально?

  Ответить  
 
 автор: Лена   (18.02.2011 в 14:22)   письмо автору
 
   для: Jaroslav   (18.02.2011 в 12:38)
 

Количество полей в таблицах одинаковые?
Чем вас не устраивает три запроса?

  Ответить  
 
 автор: Jaroslav   (18.02.2011 в 14:23)   письмо автору
 
   для: Лена   (18.02.2011 в 14:22)
 

Разные. Да всё устраивает.
Вдруг есть какие-то способы оптимизации, а я их не знаю.
Чтобы уменьшить кол-во селектов к базе данных.

  Ответить  
 
 автор: cheops   (19.02.2011 в 10:20)   письмо автору
 
   для: Jaroslav   (18.02.2011 в 14:23)
 

Если бы у вас результаты предыдущих SELECT-запросов использовались бы в последующих - можно было бы попробовать. А так нет, не получится.

  Ответить  
 
 автор: Jaroslav   (19.02.2011 в 11:39)   письмо автору
 
   для: cheops   (19.02.2011 в 10:20)
 

Спасибо за ответ.
А если будут использоваться, то как?

Например:



  $query1 = "SELECT * FROM table1 WHERE (login='neo') ORDER BY id DESC";
  $auth1 = mysql_query($query1);
  $reed1= mysql_fetch_array($auth1);

  $query2 = "SELECT * FROM table2 WHERE (login='neo'') ORDER BY id DESC";
  $auth2 = mysql_query($query2);
  $reed2= mysql_fetch_array($auth2);

  $query3 = "SELECT * FROM table3 WHERE (login='neo') ORDER BY id DESC";
  $auth3 = mysql_query($query3);
  $reed3= mysql_fetch_array($auth3); 



Т.е. сначала определяется логин пользователя, а затем уже из разных таблиц по этому логину идёт сбор данных. Поэтому куча селектов получается. Конечно, не критично. Но если такое можно оптимизировать, то хотелось бы знать как.. - для общего развития...

  Ответить  
 
 автор: cheops   (19.02.2011 в 11:45)   письмо автору
 
   для: Jaroslav   (19.02.2011 в 11:39)
 

Эти запросы как раз нужно объединять с тем запросом, который получает логин пользователя.

PS Только следует иметь в виду, что выигрышь необзятелен - иногда от объединения запросов можно и проиграть в эффектиности.

  Ответить  
 
 автор: Jaroslav   (19.02.2011 в 13:05)   письмо автору
 
   для: cheops   (19.02.2011 в 11:45)
 

Понятно, спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования