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 ?
йой, как то упростить никак ?
Над тобою даже потроллить нельзя, жалко... То, что ты прислал - это не запрос. Это код на вашем этом ПХП. чтобы админы и модераторы были на первом месте это ORDER BY case when isAdmin = true then 1 else 0 end, case when isModerator=true then 1 else 0 end , ... и далее другие поля для сортировки, если нужно. Более я даже ничего и не понял.
Выше написал условия
Короче, даже если это запрос, то это не запрос, а какая-то блевотина. Полная дерьмина.
Стикер
Ну объясните пожалуйста, чем этот запрос плох, чтобы я исправил? То что я вместо параметров запроса подставляю в запрос данные из переменных?
Да, надо подтавлять параметры , в виде ?
Ну в node.js можно через ?
Потому что неудобно читать, понимать, пожалей 2000 человек
Ну через вопросительный знак, тоже очень неудобно. Но окей я когда буду. Кидать сюда что-то буду заменять переменные на какие-то строки и цифры
за день уже мог спокойно переписать на ?, тут люди не просто так тебя просят сделать, потому что хотят помочь а ты вместо того чтобы идти на встречу, сопртивляешься
Я же сказал, без проблем смогу чуть позже смогу заменить. Я просто интересуюсь
К тому же у тебя запрос тупо неверный. Ну, не то чтобы совсем неверный,некорректный. 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 можно было не присылать, в нём информации - ноль, ты если хотел какие-то отдельные поля показать, покажи только их.
я вернулся. По поводу select мне же нужно эти данные отдать на фронт. Все кроме distance(он мне нужно чтобы вывести юзером в радиусе 200км). я потом этоп поле в js удаляю.
по поводу джоинов, наверное да, нужно все на inner переделать
tg это что ? Это tbl_groups tg Как оно в запросе участвует? LEFT JOIN tbl_groups tg ON tug.group_id = tg.id Почему ты тогда условие на эту таблицу пишешь в WHERE ? JOIN автоматом становится не LEFT, а INNER. тут вообще не понял. В where я это написал чтобы получить мемберов только этой группы.
А где DDL?
Ну вот потому что ты это не понимаешь, у тебя так всё через жопу. Потому что надо учиться, и только потом делать что-то. Ты же за руль автомобиля не садишься без обучения в автошколе...
Обсуждают сегодня