SELECT film.id, film.name, film.descrioption,
actor.id actor_id, actor.name actor_name,
genre.id genre_id, genre.name genre_name
FROM films
LEFT JOIN films_genres ON film.id = films_genres.film_id
LEFT JOIN genre ON genre.id = films_genres.genre_id
LEFT JOIN films_actors ON film.id = films_actors.film_id
LEFT JOIN actor ON actor.id = films_actors.actor_id
WHERE films_actors.actor_id IN (734, 44) -- актеры такие-то
AND films_genres.genre_id = 3 -- жанр такой-то
.dev
уже несколько лет не рекомендуется использовать для разработки, потому что это больше не "выдуманный домен" а вполне себе чья-то собственность. И браузеры могут ругаться, если вы начнете эти домены заворачивать куда попало.let a = new Array()
let b = new Array()
let c = new Array()
let d = new Array()
// объектов может быть много, с ращзными данными
// и с разными методами
a.hello = ()=>console.log('Yarrr!') // теперь у объекта "a" есть новый метод
a.hello() // -> Yarrr! его можно вызвать
// но если сделать b.hello() - будет ошибка
console.log('is same object?', a === b) // -> false объекты разные
console.log('is same prototype?', a.__proto__ === b.__proto__) // а прототоип одинаковый (общий)
// но при этом у каждого из них есть .length или .concat()
// потому что эти методы прописаны в прототипе
console.log(a.__proto__)
a.__proto__.tost = ()=>console.log('test') // а этот метод добавился всем
b.tost() // -> test
if (Array.isArray( data )) { ... }
if (typeof data === 'string') { ... }
let newStr = str.replace(/(customerContact": ")([^"]*)/, '$1' + this.value)
let wrapper = document.createElement('div')
wrapper.className = 'wrapper'
wrapper.appendChild(document.querySelector(`.box:nth-of-type(3)`))
wrapper.appendChild(document.querySelector(`.box:nth-of-type(3)`))
wrapper.appendChild(document.querySelector(`.box:nth-of-type(3)`))
document.querySelector('.box:nth-of-type(2)').after(wrapper)
window.alert = function() {
debugger;
}