Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Ребята, привет!
Не могли бы вы помочь мне в составлении запроса. Имеется таблица:
Неактивен
Неактивен
rgbeast написал:
SELECT id from test t1 JOIN test t2 USING(id) JOIN test t3 USING(id) WHERE t1.qwe=1 AND t2.qwe=6 AND t3.qwe=2;
К сожалению число JOIN нарастает. Нужен индекс на (id,qwe)
Спасибо! Мне тоже первое, что пришло в голову - с AND'ами играться. Но что делать если на этапе выполнения запроса список qwe хранится во временной таблице:
Отредактированно FiMko (25.04.2010 15:39:27)
Неактивен
Написать процедуру, которая сначала составит запрос, а потом его выполнит через PREPARE. Это если Вы хотели спросить то, что спросили. А если хотели спросить как сделать так, чтобы это работало без JOIN и без многократного выполения запросов, то не знаю как это сделать.
Неактивен
rgbeast написал:
Написать процедуру, которая сначала составит запрос, а потом его выполнит через PREPARE. Это если Вы хотели спросить то, что спросили. А если хотели спросить как сделать так, чтобы это работало без JOIN и без многократного выполения запросов, то не знаю как это сделать.
При этом обязательным условием является, что для запроса:
Неактивен
rgbeast, не можете подсказать как обойти ситуацию для временных таблиц (test - временная таблица)?
Неактивен
К сожалению, нет. Ну, то есть я могу придумать страшного страуса типа
SELECT id, COUNT(*) cnt FROM test WHERE qwe IN (1,2,6) GROUP BY id HAVING cnt = 3
но он будет медленным. Хотя и будет удовлетворять всем условиям.
Неактивен
paulus написал:
К сожалению, нет. Ну, то есть я могу придумать страшного страуса типа
SELECT id, COUNT(*) cnt FROM test WHERE qwe IN (1,2,6) GROUP BY id HAVING cnt = 3
но он будет медленным. Хотя и будет удовлетворять всем условиям.
Блин, я попал... Это я так понимаю тоже фигня-решение...?
Отредактированно FiMko (26.04.2010 21:48:19)
Неактивен
Ну, это костылик. С первого взгляда — ничем не отличается от способа, которым
MySQL создает временные таблички. Ну, разве что не пытается делать это в памяти
и не удаляет автоматом при обрывах связи.
Неактивен
paulus написал:
Ну, это костылик. С первого взгляда — ничем не отличается от способа, которым
MySQL создает временные таблички. Ну, разве что не пытается делать это в памяти
и не удаляет автоматом при обрывах связи.
Ну это да, однако ваш вариант как-то кажется компактней, может будет достаточно шустрый, ничего другого мне все равно не остается делать... Спасибо!
Неактивен
Страниц: 1