Дублировать строку в зависимости от некоторого значения столбца?

0

Скажем, у меня есть "пользователи" таблицы, с "user_id", "name" и "multiplier".

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

SELECT * FROM users

Что бы я хотел сделать сейчас, это получить строки mutiplier для каждого пользователя. Поэтому, если я скажу двум пользователям в моей таблице, что эти значения

(1, 'user1', 1)
(2, 'user2', 6)

Что бы я хотел получить - это выбрать, который вернет мне 7 строк (1 x user1 и 6 x user2)

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

Спасибо всем, кто может помочь

Теги:

2 ответа

1
Лучший ответ

Я думаю, что вам будет намного лучше опубликовать всю полноту того, что вы пытаетесь решить, потому что, вероятно, есть более чистый способ, чем то, что вы пытаетесь сделать, но приведенный ниже код должен делать то, что вам нужно, Здесь я использую таблицу Numbers. Вы можете создать это как переменную таблицы или постоянную таблицу или временную таблицу, но идея остается той же:

SELECT
     U.user_id,
     U.name,
     U.multiplier
FROM
     Users AS U
INNER JOIN Numbers AS N ON
     N.number BETWEEN 1 AND U.multiplier
  • 0
    Хотелось бы дать дополнительный плюс за «Я думаю, что вам гораздо лучше опубликовать все, что вы пытаетесь решить, потому что, вероятно, есть более чистый способ, чем то, что вы пытаетесь сделать» ... Многие разработчики имеют плохую привычку создавать собственные трудности, создавая свои собственные «проблемы».
0

Не могли бы вы сделать это с помощью временной таблицы? Создайте копию таблицы ваших пользователей с правильным количеством строк на стороне клиента, а затем присоедините свой большой длинный запрос к этой таблице вместо таблицы users.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню