powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли этот код преобразовать в один запрос?
11 сообщений из 11, страница 1 из 1
Можно ли этот код преобразовать в один запрос?
    #38638406
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Можно ли этот код преобразовать в один запрос?
Код: php
1.
2.
3.
4.
5.
6.
foreach($data as $SKU => values)
{
    $res = $db->query("SELECT * FROM `OptionsModifiers` WHERE SKU=$SKU AND OptionId IN($values[0]) AND ValueId IN($values[1])");
    //Что сделали с полученной выборкой для ДАННОГО $SKU.
}
Массивы $values[0] и $values[1] имеют одинаковое кол-во элементов.
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638422
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю этого языка, напишите итоговый SQL-запрос.
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638440
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот я и спрашиваю про итоговый запрос!
Значение языка тут не при чем - это PHP. Запрос выполняется в цикле foreach. В общем, какая разница в каком цикле - главное что именно в цикле.

1. Для данного SKU выбрать записи * у которых есть $values[0] и $values[1] (это массивы значений - т.е. IN(<значение1>,<значение2>,<значение3>,...)).
2. Далее уже для другого SKU выбрать записи, у которых уже какие-то свои $values[0] и $values[1]. То что выбралось, добавить к выборке из пункта 1.
3. Далее уже для другого SKU выбрать записи, у которых уже какие-то свои $values[0] и $values[1]. То что выбралось, добавить к выборке из предыдущих пунктов.
....
....
....
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638444
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlns,

Соберите всю вот это строку:
"SELECT * FROM `OptionsModifiers` WHERE SKU=$SKU AND OptionId IN($values[0]) AND ValueId IN($values[1])"
в переменную и выведите ее на экран.
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638447
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа того:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT * FROM `OptionsModifiers` WHERE 
(SKU=$SKU[1] AND OptionId IN($values[1][0]) AND ValueId IN($values[1][1]))
OR
(SKU=$SKU[2] AND OptionId IN($values[2][0]) AND ValueId IN($values[2][1]))
OR
<...>
OR
(SKU=$SKU[N] AND OptionId IN($values[N][0]) AND ValueId IN($values[N][1]))

Ну или через юнион алл то же самое написать. В чём сложность?
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638451
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirНу или через юнион алл то же самое написать. В чём сложность?Так все равно цикл остается. И, в отличие от исходного варианта, шансы на использование индекса падают катастрофически.
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638457
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, вроде работает!
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638521
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

подозреваю, что у ТС не те объёмы, на которых заметно наличие/отсутствие индексов :)
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638526
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoft,

подозреваю, что у ТС не те объёмы, на которых заметно наличие/отсутствие индексов :)Да все равно смысла не вижу от такого переписывания.
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38638550
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, один запрос вместо кучи, больше отличий нет.
...
Рейтинг: 0 / 0
Можно ли этот код преобразовать в один запрос?
    #38639230
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, Кстати UNION ALL лучше, чем OR, т.к. сохраняет шансы на использование индексов.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли этот код преобразовать в один запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]