![]() |
#1 |
Мафиози
Регистрация: 11.09.2008
Адрес: <H1></H1>
Сообщений: 1,174
Вес репутации: 258
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Всем привет!
Есть таблица: id - znak 4 - 1 4 - 5 3 - 1 4 - 4 2 - 8 Как мне выбрать id, znak которого имеет значения 1 && 5 && 4. Т.е. мне должно выдать 4. Без переборов на php можно обойтись? Чисто запросами к MySQL получится? Чёт не допру...
__________________
![]() |
![]() |
![]() |
![]() |
#2 |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 264
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Русская мафия,
Самый простой вариант - это джоинами соединить таблицу саму с собой несколько раз по числу искомых параметров) и отфильтровать типа: t1.id = t2.id and t2.id = t3.id and t1.znak = 1 and t2.znak = 4 and t3.znak = 5 Но если число параметров большое, то джоины не подойдут. Добавлено через 5 минут Также можно попробовать сделать группировку по id составить запрос. Последний раз редактировалось boric; 14.05.2011 в 11:11. Причина: Добавлено сообщение |
![]() |
![]() |
![]() |
#3 |
Мафиози
Регистрация: 11.09.2008
Адрес: <H1></H1>
Сообщений: 1,174
Вес репутации: 258
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Что вы имеете ввиду под параметрами? Не понял...
Количество строк с одинаковым id и разными znak может сотни достигать, а то и больше... Добавлено через 19 минут Ну а как? Я думал про группировку, но ведь не получится так. Как составить можно это? Добавлено через 7 минут Придумал! Можно что то типа этого: PHP код:
Базы пока нет чтобы проверить - пока только проектирую всё в голове, как делать...
__________________
![]() Последний раз редактировалось Русская мафия; 14.05.2011 в 11:45. Причина: Добавлено сообщение |
![]() |
![]() |
![]() |
#4 | |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 264
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
PHP код:
|
|
![]() |
![]() |
![]() |
#5 |
Мафиози
Регистрация: 11.09.2008
Адрес: <H1></H1>
Сообщений: 1,174
Вес репутации: 258
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() boric,понятно, спасибо
__________________
![]() |
![]() |
![]() |
![]() |
#6 | ||||
Починяю примуса
Регистрация: 26.09.2008
Сообщений: 1,505
Вес репутации: 300
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
Цитата:
выдаст Цитата:
__________________
|
||||
![]() |
![]() |
![]() |
#7 |
Мафиози
Регистрация: 11.09.2008
Адрес: <H1></H1>
Сообщений: 1,174
Вес репутации: 258
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Atomic,
в общем эта таблица - список свойств предметов. id - это id предмета. znak - это свойство предмета и нужно по этой таблице сделать поиск предметов, у которых совпадают все свойства. тут у предмета 4 есть 3 свойства: 1,5,4 Вот нужно сделать поиск по этой таблице предметов с совпадением всех свойств
__________________
![]() |
![]() |
![]() |
![]() |
#8 |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 264
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Русская мафия
Это тоже самое, что поиск по инвертированному индексу, который из себя представляет таблицу с полями: doc_id, word_id. У вас предмет обладает набором свойств, а здесь документ имеет набор слов. В общем все тоже самое. Эксперимент показал, что запрос с джоинами работает быстрее до примерно пяти слов на входе, а выше начинают тормоза расти по экспоненте. А вот запрос с группировкой на коротких фразах работает медленней, зато нет экспонентной зависимости от числа слов. Если критична скорость, то можете скомбинировать оба варианта в зависимости от числа свойств искомых предметов. |
![]() |
![]() |
![]() |
#9 |
Мафиози
Регистрация: 11.09.2008
Адрес: <H1></H1>
Сообщений: 1,174
Вес репутации: 258
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() boric,спасибо за замеры. Скорость не критична, буду использовать группировку
__________________
![]() |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите составить запрос mysql | Ufaweb | Разработка и сопровождение сайтов | 30 | 25.08.2012 17:40 |
Помогите придумать на какую тему делать сайт. | chekunin | Курилка | 18 | 18.08.2010 01:50 |
Помогите придумать домен, пожалуйста. | valu0808 | Курилка | 44 | 27.07.2009 06:40 |
Помогите составить SQL запрос? | Fredy314 | Разработка и сопровождение сайтов | 7 | 02.06.2009 09:19 |
Помогите придумать домен! | ska4ai | Курилка | 18 | 08.06.2008 23:18 |
Часовой пояс GMT +3, время: 05:49.