Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли этот код преобразовать в один запрос? / 11 сообщений из 11, страница 1 из 1
12.05.2014, 10:32:44
    #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
12.05.2014, 10:45:12
    #38638422
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли этот код преобразовать в один запрос?
я не знаю этого языка, напишите итоговый SQL-запрос.
...
Рейтинг: 0 / 0
12.05.2014, 10:53:13
    #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
12.05.2014, 10:55:25
    #38638444
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли этот код преобразовать в один запрос?
xmlns,

Соберите всю вот это строку:
"SELECT * FROM `OptionsModifiers` WHERE SKU=$SKU AND OptionId IN($values[0]) AND ValueId IN($values[1])"
в переменную и выведите ее на экран.
...
Рейтинг: 0 / 0
12.05.2014, 10:57:11
    #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
12.05.2014, 11:01:06
    #38638451
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли этот код преобразовать в один запрос?
tanglirНу или через юнион алл то же самое написать. В чём сложность?Так все равно цикл остается. И, в отличие от исходного варианта, шансы на использование индекса падают катастрофически.
...
Рейтинг: 0 / 0
12.05.2014, 11:07:00
    #38638457
xmlns
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли этот код преобразовать в один запрос?
Спасибо, вроде работает!
...
Рейтинг: 0 / 0
12.05.2014, 11:43:39
    #38638521
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли этот код преобразовать в один запрос?
miksoft,

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

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


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