Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, помогите с запросом. Постараюсь описать что хочу получить. связь многие ко многим формально опишу Есть таблица items Код: sql 1. Есть таблица folders Код: sql 1. Есть таблица соотношений Код: sql 1. один folders может содержать в себе много items в то время как один items может содержаться во многих folders делаю выборку: хочу получить items который находится в одном из folders FID = 1 (это просто) ? исключу folders Код: sql 1. Получу все items из folders = 1 делаю выборку: хочу получить items ИЗ НЕСКОЛЬКИХ folders FID (1,2,3) Код: sql 1. получу items из 3 folders а теперь вопрос: Мне нужно выбрать items которые ОДНОВРЕМЕННО есть folders FID (1,2,3) запрос выглядел бы так: Код: sql 1. но это невозможно и не правильно. Не могу найти оптимальный запрос. список folders доступен, он фиксированный, поэтому пока что сделал запрос из исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 13:59 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 14:05 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Akina, правильно ли я понимаю, что я выполняю запрос Код: sql 1. 3 является количество условий OR т.е. 3 точных вхождения ? сейчас пробую данный запрос, вроде работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 14:37 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
т.е. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 14:39 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Угу. И если пара (id,fid) уникальна, то DISTINCT не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:34 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Akina, СПАСИБО Огромное! да, пара (id,fid) уникальны, забыл указать :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:50 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Akina, раз такое дело. Можно еще помочь. Как исключить items если он находится ХОТЬ в ОДНОМ из перечисленных folders ? SELECT * FROM ItemsID JOIN items USING (id) WHERE fid <> 1 AND fid <> 3 GROUP BY id в таком случае он выведет ITEMS из 2 FOLDERS (2,3) (1,2) и т.д. надо чтоб он полностью исключал этот ITEMS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 17:37 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
darknesmonkКак исключить items если он находится ХОТЬ в ОДНОМ из перечисленных folders ? N/t/ вывести только те, что не входят ни в один из списка? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 20:42 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Akina, нет, не то. например: 1 ITEM лежит в 1,3 FOLDERS 2 ITEM лежим в 2,3 FOLDERS 3 ITEM лежит в 1,2 FOLDERS делаю запрос, вывести ITEMS которого нет 3 FOLDERS должен выйти только 3 ITEM т.к. 1, 2 ITEM есть в 3 FOLDERS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 10:02 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Akina, хотя верно! просто сейчас не могу объединить 2 запроса. например вывести из 3 и 1 FOLDERS исключая 2 folders уже запутался) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 11:11 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Вроде разобрался! СПАСИБО Надо также исключающие включить в OR но не включать в точное вхождение! ИСКЛЮЧАЮ 3 FOLDERS выбираю ТОЧНО 1,2 FOLDERS примерно так Код: sql 1. до этого мало работал с HAVING для сортировки агрегатных функций :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 11:39 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Лучше единообразно: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 11:47 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Akina, да, так и сделал) А теперь сделал COUNT этого чуда для ЛИМИТОВ пришлось сделать так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. получается теперь 2 запроса один для COUNT другой для выборки с лимитами, по идее запрос выполняется 0.0041 сек для 4000 записей в таблице в зависимости от параметров выбора FOLDERS думаю, это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 14:07 |
|
||
|
Сложный запрос MySQL - многие ко многим
|
|||
|---|---|---|---|
|
#18+
Да нормально... таблица мелкая, компактная, вся закэшена, само собой всё взлетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=77&tid=1830803]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 354ms |

| 0 / 0 |
