Задавайте вопросы, мы ответим
Вы не зашли.
Есть табличка примерно такого вида:
pid - value
1 - 3
1 - 5
2 - 1
3 - 1
4 - 3
5 - 5
Нужно из этой таблички получить все pid, где value равно и 3, и 5. В примере выше это pid=1. Причём это должен быть запрос с использованием индексов. Один pid может иметь любое количество value.
Запрос "select pid from table where value=3 and value=5;" понятное дело не работает, но по смыслу нужно именно это.
Не подскажете как получить pid, имеющий сразу несколько value? Может быть таблицу как-то по-другому переделать?
Неактивен
SELECT a.pid
FROM tbl a JOIN tbl b USING (pid)
WHERE a.value = 3 AND b.value=5.
Индексы нужны отдельно на pid и на value.
Неактивен
Не подскажете, а если нужно больше value в запросе проверять, то запрос будет таким?
SELECT a.pid
FROM tbl a JOIN tbl b USING (pid) JOIN tbl с USING (pid) JOIN tbl d USING (pid)
WHERE a.value = 3 AND b.value=5 AND c.value=6 AND d.value=7
Неактивен
Простите ребяты, но я не понял. чего вы тут, особенно зачем нужен JOIN
По моему сия задача решается так:
SELECT pid FROM table WHERE value IN (3,5,7,10.......) GROUP BY pid
разве нет?
+ составной индекс value+pid или наоборот (надо смотреть explain)
P.S. понял. В моем варианте будет OR, а не AND
Отредактированно Shopen (11.07.2008 00:59:10)
Неактивен
tma написал:
Не подскажете, а если нужно больше value в запросе проверять, то запрос будет таким?
SELECT a.pid
FROM tbl a JOIN tbl b USING (pid) JOIN tbl с USING (pid) JOIN tbl d USING (pid)
WHERE a.value = 3 AND b.value=5 AND c.value=6 AND d.value=7
Да, можно так. Тогда индекс на (pid) можно расширить на (pid,value), с ним _возможно_ будет
лучше - надо посмотреть EXPLAIN на реальных данных.
Учтите, что большое количество таблиц в JOIN будет тормозить запрос.
Неактивен
У меня такая ситуация, я создал несколько таблиц. Каждая из которых отвечает за определенный параметр. Первая "страна" где только два поля ID и TITLE где ID первичный ключ. Вторая таблица-"Регион", где поля те же. Третья "Город" всё то же самое. Моя задача выводить на странице сайта в форме из трех полей эти три параметра. То есть получается так, Я выбираю Россия, второе поле обновляется без перезагрузки страницы и появляются регионы соответствующие России; соответственно третье поле обновляется уже до городов соответствующих этому региону.
Неактивен
...каквозможно выйти из этой ситуации? Огромное спасибо!
Неактивен
подобный вопрос обсуждался http://sqlinfo.ru/forum/viewtopic.php?id=381
Чтобы работало без перезагрузки страницы, используйте AJAX, можете задать вопрос по AJAX на webew.ru
Неактивен