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 ответов

3 просмотра

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

Над тобою даже потроллить нельзя, жалко... То, что ты прислал - это не запрос. Это код на вашем этом ПХП. чтобы админы и модераторы были на первом месте это 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?

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

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

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

Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Всем привет. Есть кто разбирается в платежках? Что б принимать из других стран и выплачивать рф снг
Musa
6
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
А как получить доступ к отправленному сообщению в ChosenInlineResult? Раньше кажется можно было, щас убрали?
net
2
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Всем привет В общем надо на странице вакансии вывести вакансии с hh, но когда я пишу код в разделе Code ошибка Invalid URL format. The URL should start with the forward slash...
A da
1
Карта сайта