Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: выборка за раз данных с разных запросов
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » выборка за раз данных с разных запросов

Страниц (1): [1]
 

1. DlTA - 31 Июля, 2018 - 15:03:04 - перейти к сообщению
переделываю фильтр на сайте
и очень хотелось бы ускорить обработку, нынче имеем много разных параметров, и для каждого параметра делаем отдельный запрос для получения списка в select [длина, ширина, ... и что-то еще].

вопрос: а можно как-то объединить запрос для получения всего за раз?
а в результате получить:
[длина]=>1
[длина]=>2
[длина]=>3
[высота]=>1
[высота]=>3
[высота]=>5
[ширина]=>3
[ширина]=>10
2. Vladimir Kheifets - 31 Июля, 2018 - 16:34:11 - перейти к сообщению
DlTA пишет:
переделываю фильтр на сайте
и очень хотелось бы ускорить обработку, нынче имеем много разных параметров, и для каждого параметра делаем отдельный запрос для получения списка в select [длина, ширина, ... и что-то еще].

вопрос: а можно как-то объединить запрос для получения всего за раз?
а в результате получить:
[длина]=>1
[длина]=>2
[длина]=>3
[высота]=>1
[высота]=>3
[высота]=>5
[ширина]=>3
[ширина]=>10

Добрый день!
Если я Вас правильно понял и у Вас устроено так:
Спойлер (Отобразить)
то просто можно сделать один запрос
Спойлер (Отобразить)
Удачи!
3. DlTA - 31 Июля, 2018 - 16:38:48 - перейти к сообщению
выборка у меня не с одной таблицы, их там с 10-ток

от товара, идет выборка по наличию, а там идет выборка по таблице по размеру, высоте, ...
4. Vladimir Kheifets - 01 Августа, 2018 - 07:33:35 - перейти к сообщению
DlTA пишет:
выборка у меня не с одной таблицы, их там с 10-ток
от товара, идет выборка по наличию, а там идет выборка по таблице по размеру, высоте, ...

Добрый день!
Если таблиц несколько, то можно писать название таблицы и название поля, например,
SELECT table1.length, table2.height, table2.width... и испльзовать в запросах JOIN
Посмотрите, пример запроса из четырёх таблиц здесь
http://forum.php.su/topic.php?fo...92123#1532692123
К сожалению, для более детального ответа не достаточно информации.
Удачи!
5. DlTA - 01 Августа, 2018 - 07:52:24 - перейти к сообщению
JOIN у меня есть, я же говорю что в запросе выбираются до 10 таблиц
6. Vladimir Kheifets - 01 Августа, 2018 - 15:38:33 - перейти к сообщению
DlTA пишет:
JOIN у меня есть, я же говорю что в запросе выбираются до 10 таблиц

а в начале Вы написали:
Цитата:
для каждого параметра делаем отдельный запрос....
.............
вопрос: а можно как-то объединить запрос для получения всего за раз?

Простите, не могли бы Вы показать хотябы один Ваш запрос с JOINT, который выбирает из 10 таблиц один параметр и могли бы написать что-то про эти таблицы.
7. DlTA - 01 Августа, 2018 - 21:44:35 - перейти к сообщению
для примера

Спойлер (Отобразить)

и это у меня выгрузка списка id товаров, проверяется привязка к разделу, подразделу, и ... много чего еще
(Добавление)
для примера, попробовал объединить 2 таблицы
CODE (SQL):
скопировать код в буфер обмена
  1. (
  2. SELECT  `sizes`.`rus` ,  `sizes`.`id`
  3. FROM  `sizes`
  4. WHERE  `sizes`.`id` =2
  5. )
  6. UNION (
  7.  
  8. SELECT  `colors`.`id` ,  `colors`.`rus`
  9. FROM  `colors`
  10. WHERE  `colors`.`id` =1
  11. )
  12.  

это работает, НО ЭТО ПРАВИЛЬНО??
8. Vladimir Kheifets - 03 Августа, 2018 - 08:25:54 - перейти к сообщению
DlTA пишет:
для примера

Спойлер (Отобразить)

и это у меня выгрузка списка id товаров, проверяется привязка к разделу, подразделу, и ... много чего еще
(Добавление)
для примера, попробовал объединить 2 таблицы
CODE (SQL):
скопировать код в буфер обмена
  1. (
  2. SELECT  `sizes`.`rus` ,  `sizes`.`id`
  3. FROM  `sizes`
  4. WHERE  `sizes`.`id` =2
  5. )
  6. UNION (
  7.  
  8. SELECT  `colors`.`id` ,  `colors`.`rus`
  9. FROM  `colors`
  10. WHERE  `colors`.`id` =1
  11. )
  12.  

это работает, НО ЭТО ПРАВИЛЬНО??

Добрый день!
Если это работает, то правильно, но Вам "хотелось бы ускорить обработку".
Не уверен в том, что в Вашем случае это решение оптимальное.
Ваш запрос с UNION создаёт временную таблицу и на больших базах данных может работать медленнее, чем альтернативные решения, например, с JOINT, если это возможно.

 

Powered by ExBB FM 1.0 RC1