select b.*, -- все колонки по книге
a.* -- все колонки по сведениям об авторе
from books as b
join book_autor as ba on b.book_id = ba.book_id -- если у книги может не быть авторов, то нужен left join
join autors as a on ba.autor_id = a.autor_id -- если у книги может не быть авторов, то нужен left join
where b.book_id = :book_id -- сюда подставляем параметр нужной книги.
<?php foreach ($_SESSION['arr'] as $gorod) : ?>
<tr>
<td><?php echo $gorod['id']; ?></td>
<td><?php echo $gorod['name']; ?></td>
<td><?php echo $gorod['area']; ?></td>
<td><?php echo $gorod['population']; ?></td>
</tr>
<?php endforeach; ?>
} else if (empty($name)) {
$mysql = "SELECT * FROM city";
DELETE FROM joom_user_usergroup_map -- m - забудьте про алиасы в делетах, пока работаете в MariaDB !
WHERE NOT EXISTS (SELECT * FROM joom_users u WHERE u.id = joom_user_usergroup_map.user_id -- будьте добры указывать имя таблицы полностью, которую обрабатывает delete
);
// инициализация значений по умолчанию (тело конструктора, если использовать ООП. В классе будете использовать this контекст класса вместо window)
window.is_mouse_catch = false; // зажата ли мышь?
window.mouse_path = 0.0; // путь мыши
// предыдущие координаты мыши
window.cl_X = null;
window.cl_Y = null;
// конец инициализации
// обработчик нажатия кнопки
document.addEventListener('mousedown', function(e)
{
// фиксируем параметры мыши в переменных, за пределами локальной области видимости обработчика
window.is_mouse_catch = true;
window.mouse_path = 0.0;
window.cl_X = e.clientX;
window.cl_Y = e.clientY;
});
// обработчик отпускания кнопки
document.addEventListener('mouseup', function(e)
{
// фиксируем отпускание кнопки мыши в переменной, за пределами локальной области видимости обработчика
window.is_mouse_catch = false;
});
// обработчик движения мыши
document.addEventListener('mousemove', function(e)
{
// если кнопку не нажимали, то прерываем обработчик
if(window.is_mouse_catch === false)
return;
// определяем текущие координаты
let currentX = +e.clientX;
let currentY = +e.clientY;
// считаем дельту пути
let delta = ((currentX - window.cl_X) ** 2 + (currentY - window.cl_Y) ** 2) ** 0.5;
// приращиваем дельту пути к общему результату
window.mouse_path += delta;
// переопределяем предыдущие координаты
window.cl_X = currentX;
window.cl_Y = currentY;
// пишем в лог
console.log('currentX: ' + currentX + '; currentY: ' + currentY + ' delta: ' + delta + '; total_path: ' + window.mouse_path);
});
С e-bay через посредников заказывать не вариант, т.к. за доставку берут слишком много.
Это дипломная работа и требований по языку и фреймворку нет. Из-за этого не могу определиться со стеком бэка.
select A.*
from
(
select B.*,
row_number() over (partition by B.nomin_id order by B.countUser desc) rwnm -- партишином задаем область счета строк, а сортировкой - порядок счета
from
(
SELECT count(user_id) countUser, nomin_id, film_id
FROM votes
GROUP BY film_id , nomin_id
) B
) A
where rwnm <= 5 -- берем по этому количеству от каждого локального счета
Но всего в таблице 25 000 строк запрос выполняется 30 секунд, а потом крах.
Есть две пары 3,5мм колонок и 1 блютузовская.