powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Рандомная запись с заданным шансом из другой таблицы
7 сообщений из 7, страница 1 из 1
Рандомная запись с заданным шансом из другой таблицы
    #39600765
Erriour
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 таблицы, хранящие следующие данные:
case_in:

items:



Задача: получить одну строку из заданного списка предметов рандомом, умноженным на определённый шанс.

Попытался это сделать так (1 запрос):
Код: sql
1.
SELECT * FROM `items`, `case_in` WHERE items.id IN (2,3,4) ORDER BY RAND()*case_in.chance DESC LIMIT 1


Но понимаю, что шансы case_in.chance никак не совпадают с нужными строками.

Раньше таблица была одна, шансы были соотнесены к каждому предмету свои. Запрос был такой (2 запрос):
Код: sql
1.
SELECT * FROM `items` WHERE `id` IN (2,3,4) ORDER BY RAND()*`chance` DESC LIMIT 1


Но такой вариант не соответствует текущим требованиям, поэтому был убран.

В целом, задача решается выборкой строк из `items`, подставлением к ним соответствующих `chance` по `item_id`, а затем работа аналогично второго запроса, но я не особо понимаю, как это правильно написать.

Как получить аналогичный результат из второго запроса, но при помощи этих двух таблиц?
...
Рейтинг: 0 / 0
Рандомная запись с заданным шансом из другой таблицы
    #39600784
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каков смысл значений поля chance? записи отдать с вероятностью 1:99:100 или 1:98:1?
...
Рейтинг: 0 / 0
Рандомная запись с заданным шансом из другой таблицы
    #39600806
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erriourподставлением к ним соответствующих `chance` по `item_id`Ну и где это в запросе?
Как должны быть связаны между собой таблицы?
...
Рейтинг: 0 / 0
Рандомная запись с заданным шансом из другой таблицы
    #39600882
Erriour
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, от 1 до 100. Просто число, не зависимое от какого-то определённого числа. Чем выше число, тем выше шанс, что выпадет.

miksoft, так я и не знаю, как это записать...
...
Рейтинг: 0 / 0
Рандомная запись с заданным шансом из другой таблицы
    #39600922
Erriour,

ну так и делай - через джойн:

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * 
  FROM `items` i 
  JOIN `case_in`c
    ON i.ID = c.ITEM_ID
 WHERE i.id IN (2,3,4)
 ORDER BY RAND()*c.chance DESC
 LIMIT 1
...
Рейтинг: 0 / 0
Рандомная запись с заданным шансом из другой таблицы
    #39600925
Erriour,

но в целом, подход - неверный....
...
Рейтинг: 0 / 0
Рандомная запись с заданным шансом из другой таблицы
    #39600946
Erriour
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, да, то что нужно. Спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Рандомная запись с заданным шансом из другой таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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