powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / 1 сложный запрос или несколько простых?
5 сообщений из 5, страница 1 из 1
1 сложный запрос или несколько простых?
    #39528912
PavelRemm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 3 таблицы:
users (id, type, online),
colors(id,name),
user_colors(user_id, color_id)

Нужно получить выборку в которой будет список цветов для пользователей которые онлайн, и тип равен заданному.

У меня алгоритм примерно такой получился.
<?php
$result = SELECT * id FROM users WHERE type = $type AND online = true;
$result = SELECT * color_id FROM user_colors WHERE id = массив id который вернет первый запрос
$result = SELECT * name FROM colors WHERE id = массив color_id который вернет второй запрос


Можно ли это все сделать одним запросом? Пример пожалуйста.
Что будет лучше с точки зрения производительности, 3 таких запроса или 1 большой и страшный(если он возможен).


Поправите ошибки в синтаксисе, мой вариант все равно не работает.
Второй запрос может/будет возвращать дубликаты, можно ли в запросе это ограничить?
...
Рейтинг: 0 / 0
1 сложный запрос или несколько простых?
    #39528916
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelRemmМожно ли это все сделать одним запросом? Пример пожалуйста.
Навскидку, как-то так примерно:
Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT `colors`.`name`
FROM `users`
JOIN `user_colors` ON `users`.`id` = `user_colors`.`user_id`
JOIN `colors` ON `colors`.`id` = `user_colors`.`color_id`
WHERE `users`.`type` = $type AND `users`.`online` = 1



PavelRemmЧто будет лучше с точки зрения производительности, 3 таких запроса или 1 большойЗадача довольно проста. Насколько понимаю, на клиенте не предусматривается никакой обработки данных между запросами. В таком случае, не вижу смысла гонять данные между сервером и клиентом. Какой-то явно ощутимой разницы в производительности при указанных структурах таблиц вряд ли найдете. Индексы правильно проставить необходимо в любом случае.

PS: А нафига нужен просто список цветов безотносительно привязки к конкретным пользователям? "Раскрасить" пользователей своими цветами - понятная задача, а свалить цвета активных пользователей в одну кучу - не вполне.
...
Рейтинг: 0 / 0
1 сложный запрос или несколько простых?
    #39528922
PavelRemm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
'Цвет' - аналогия для упрощения вопроса.

Есть 2 типа пользователей (Тип 1, Тип 2).
Пользователь типа-1 при регистрации на сайте выбирает из списка "Цвет" несколько пунктов.
Пример:
Список 1.зеленый, 2.черный, 3.красный 4.синий ....
Пользователь может выбрать один или больше вариантов.

Есть форма для пользователей типа-2 в которой есть тег <select>
Его нужно заполнить только теми 'Цветами' которые выбрали пользователи типа-1 при регистрации и которые в данный момент онлайн на сайте.

Вот у меня и получилось 3 таблички.
Таблица user_colors - связующая между двумя другими. Типо связь (многие ко многим).
Я это понял так. Если я ошибаюсь, пожалуйста поправте.
...
Рейтинг: 0 / 0
1 сложный запрос или несколько простых?
    #39528923
PavelRemm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle Индексы правильно проставить необходимо в любом случае.

Про индексы можно подробнее? Я не совсем понимаю.
...
Рейтинг: 0 / 0
1 сложный запрос или несколько простых?
    #39528934
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelRemmМожно ли это все сделать одним запросом?
........
Что будет лучше с точки зрения производительности, 3 таких запроса или 1 большой и страшный(если он возможен).
[/quot]
Приоритеты не так расставлены.
Для отладки используй три запроса. Можно будет посмотреть промежуточные данные.
После проверки работоспособности алгоритма - объедини в один.
Проверь оба варианта на скорость.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / 1 сложный запрос или несколько простых?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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