-- премиум выборка
select 1 as priv_type, -- тип привилегии 1 - премиум объявление
C.*
from
(
select B.*,
dense_runk() over (order by B.user_id) as user_num, -- нумеруем авторов объявлений
row_number() over (partition by B.user_id order by rownum) as add_num -- нумеруем объявление в пределах автора
from
( -- достаем премиум объявления в случайной сортировке
select A.*
from A
where premium_pay_date is not null and sysdate - premium_pay_date <= 3 -- условие попадания в премиум
order by DBMS_RANDOM.RANDOM
) B
) C
where user_num <= 5 -- берем 5 авторов
and add_num = 1 -- по одному объявлению от автора
union
-- обычная выборка
select 2 as priv_type, -- тип привилегии 2 - обычное объявление
A.*,
-- зануляем доп. поля от премиум, чтобы union работал корректно
null user_num,
null add_num
from A
where premium_pay_date is null or sysdate - premium_pay_date > 3 -- можно исключить премиум из общей выборки, а можно не исключать
order by priv_type, Publication_Date desc Открыл крышку посмотреть вдруг прижимная пластина не прикручена или ещё что, все хорошо.
<iframe src="адрес_облачного_сервиса/просмотрщик_облачного_сервиса?url=url_файла_на_вашем_ресурсе_в_открытом_доступе">
</iframe> <?php
// считаем, что данные пришли по POST-у
if(isset($_POST['submit'])) // проверяем, что приехали данные формы по submit, в кнопке сабмита атрибут name должен иметь значение submit
{
$inserted_user_count = 0;
if(isset($_POST['selected_users'])) // присутствуют отмеченные пользователи
{
$pdo = new PDO(параметры подключения к базе);
foreach($_POST['selected_users'] as $selected_user_id)
{
$stmt = $pdo->prepare('insert into ваша таблица (атрибуты таблицы) values (значения атрибутов таблицы, кроме user_id, :user_id)');
$stmt->bindParam(':user_id', $selected_user_id, PDO::PARAM_INT);
// еще байндим какие-то параметры у запроса, если есть плейсхолдеры, кроме :user_id.
$stmt->execute(); // наконец, выполняем запрос
$pdo->commit(); // фиксируем изменения в базе данных, если у вас соединение открыто не в режиме автокамита
$inserted_user_count++;
}
$pdo = null; // закрываем соединение с базой
}
echo 'Обработано пользователей: '.$inserted_user_count;
}
?> SELECT *
FROM table
join (select 1 id, 7 val union
select 2, 8 union
select 3, 5 union
select 4, 4 union
select 5, 1) tmp on table.id = tmp.val
order by tmp.id