SELECT tu.id,

tu.firstname,
tu.lastname,
role,
CONCAT('${constant.profile_image}',profile_image) as profile_image,
CONCAT('${constant.cover_image}',cover_image) as cover_image,
CONCAT('${
constant.profile_image_imagekit
}',profile_image, ?) as profile_image_imagekit,
CONCAT('${
constant.profile_image_imagekit
}',cover_image, ?) as cover_image_imagekit,
((6372 * 2 * ASIN(
SQRT(POWER(SIN((${loginSession.lat} - tu.lat) * pi() / 180 / 2), 2) +
COS(${loginSession.lat} * pi() / 180) * COS(tu.lat * pi() / 180) *
POWER(SIN((${loginSession.lng} - tu.lng) * pi() / 180 / 2), 2))
)) * 1000) AS distance,
IF(
tu.id IN (${friendsList.primaryUsers.join(', ')}),
TRUE,
FALSE
) as is_friends
FROM tbl_user tu
LEFT JOIN tbl_users_groups_relations tug ON tu.id = tug.user_id
LEFT JOIN tbl_groups tg ON tug.group_id = tg.id
WHERE tg.id = ?
AND IF(
tg.type != '${GROUP_TYPES.Gym}',
tu.id IN
(${[...friendsList.primaryUsers, ...friendsList.otherUsers].join(', ')}),
tg.type = '${GROUP_TYPES.Gym}'
)
AND tu.is_delete = '0'
AND tu.deleted_at IS NULL
HAVING (distance between 0 AND 200000)
ORDER BY
FIELD(role, 'A', 'M', 'U'),
profile_image = '${constant.default_image_name}',
tu.firstname,
tu.lastname
LIMIT ?
OFFSET ?

21 ответов

19 просмотров

йой, как то упростить никак ?

Над тобою даже потроллить нельзя, жалко... То, что ты прислал - это не запрос. Это код на вашем этом ПХП. чтобы админы и модераторы были на первом месте это ORDER BY case when isAdmin = true then 1 else 0 end, case when isModerator=true then 1 else 0 end , ... и далее другие поля для сортировки, если нужно. Более я даже ничего и не понял.

Alex- Автор вопроса

Выше написал условия

Короче, даже если это запрос, то это не запрос, а какая-то блевотина. Полная дерьмина.

Стикер

Alex- Автор вопроса

Ну объясните пожалуйста, чем этот запрос плох, чтобы я исправил? То что я вместо параметров запроса подставляю в запрос данные из переменных?

Да, надо подтавлять параметры , в виде ?

Alex- Автор вопроса

Ну в node.js можно через ?

Потому что неудобно читать, понимать, пожалей 2000 человек

Alex- Автор вопроса

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

за день уже мог спокойно переписать на ?, тут люди не просто так тебя просят сделать, потому что хотят помочь а ты вместо того чтобы идти на встречу, сопртивляешься

Alex- Автор вопроса

Я же сказал, без проблем смогу чуть позже смогу заменить. Я просто интересуюсь

К тому же у тебя запрос тупо неверный. Ну, не то чтобы совсем неверный,некорректный. FROM tbl_user tu LEFT JOIN tbl_users_groups_relations tug ON tu.id = tug.user_id LEFT JOIN tbl_groups tg ON tug.group_id = tg.id WHERE tg.id = ? tg это что ? Это tbl_groups tg Как оно в запросе участвует? LEFT JOIN tbl_groups tg ON tug.group_id = tg.id Почему ты тогда условие на эту таблицу пишешь в WHERE ? JOIN автоматом становится не LEFT, а INNER. JOIN в tg идёт через tug, она тоже LEFT, а должна быть INNER тогда, ибо такого не бывает: если ветка JOIN ов LEFT, она должна быть вся LEFT, либо иначе вся INNER. Так что вообще нихера не понятно, что ты там хотел выбирать... Всё, что в списке вывода , после SELECT и до FROM можно было не присылать, в нём информации - ноль, ты если хотел какие-то отдельные поля показать, покажи только их.

👍

Alex- Автор вопроса

я вернулся. По поводу select мне же нужно эти данные отдать на фронт. Все кроме distance(он мне нужно чтобы вывести юзером в радиусе 200км). я потом этоп поле в js удаляю.

Alex- Автор вопроса

по поводу джоинов, наверное да, нужно все на inner переделать

Alex- Автор вопроса

tg это что ? Это tbl_groups tg Как оно в запросе участвует? LEFT JOIN tbl_groups tg ON tug.group_id = tg.id Почему ты тогда условие на эту таблицу пишешь в WHERE ? JOIN автоматом становится не LEFT, а INNER. тут вообще не понял. В where я это написал чтобы получить мемберов только этой группы.

А где DDL?

Ну вот потому что ты это не понимаешь, у тебя так всё через жопу. Потому что надо учиться, и только потом делать что-то. Ты же за руль автомобиля не садишься без обучения в автошколе...

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта