|
|
|
| Доброго времени суток. Помогите, пожалуйста, сделать из запроса:
SELECT film.meta_keywords, title, DATE_FORMAT(added, '%d/%m/%Y') AS `date`, DATE_FORMAT(added, '%T') AS `time`, description, duration, poster, (`like` - dislike) AS difference, voter, viewer, `year`, quality, dub
FROM film
JOIN year_film
ON film.id_film = year_film.id_film
JOIN `year`
ON year_film.id_film = year.id_year
JOIN quality_film
ON film.id_film = quality_film.id_film
JOIN quality
ON quality_film.id_quality = quality.id_quality
JOIN dub_film
ON film.id_film = dub_film.id_film
JOIN dub
ON dub_film.id_dub = dub.id_dub
WHERE title = '$cinema'
функцию или процедуру. И еще объясните, что лучше: ф-ция или п-ра? Заранее благодарю. | |
|
|
|
|
|
|
|
для: ubahuba
(25.05.2014 в 22:20)
| | 1. Погодите, а вы для каких целей собираетесь оформлять запрос в виде процедуры или функции?
2. Функция хороша тем, что возвращает значение и может легко встраиваться в другие запросы, процедура вызывается при помощи специального ключевого слова CALL, в запросы её встроить нельзя. | |
|
|
|
|
|
|
|
для: cheops
(26.05.2014 в 00:20)
| | Хочу отделить sql от php кода, это во-первых, а во-вторых, говорят, что ф-ции и п-ры снижают нагрузку. Вот и прошу помощи. | |
|
|
|
|
|
|
|
для: Rikone
(29.05.2014 в 11:24)
| | > а во-вторых, говорят, что ф-ции и п-ры снижают нагрузку. Вот и прошу помощи.
Это не так. Функции и процедуры нужны тогда, когда вы без них не можете сделать какую-то выборку на уровне SQL, и вам приходится сперва сделать один запрос, потом в интерпретаторе получить результат, потом сделать второй запрос и т.п. И еще "лучше", если это происходит в цикле. В данном случае вы (на сколько я вижу) обошлись одним запросом. В такой ситуации лучше не прибегать к хранимым функциям и процедурам, т.к. вы скрываете от себя же (или от других разработчиков, если вы работаете в команде) значительную часть кода, который (возможно) придется когда-нибудь править. | |
|
|
|
|
|
|
|
для: Sfinks
(29.05.2014 в 21:30)
| | Я работаю один, а поправить код труда не составит. Так вы мне можете помочь составить ф-цию? | |
|
|
|
|
|
|
|
для: ubahuba
(29.05.2014 в 22:22)
| | Создание:
DROP PROCEDURE IF EXISTS any_name;
DELIMITER $$
CREATE PROCEDURE any_name(IN parameter VARCHAR(50))
BEGIN
SELECT
film.meta_keywords,
title,
DATE_FORMAT(added, '%d/%m/%Y') AS `date`,
DATE_FORMAT(added, '%T') AS `time`,
description,
duration,
poster,
(`like` - dislike) AS difference,
voter,
viewer,
`year`,
quality,
dub
FROM
film
JOIN year_film
ON film.id_film = year_film.id_film
JOIN `year`
ON year_film.id_film = year.id_year
JOIN quality_film
ON film.id_film = quality_film.id_film
JOIN quality
ON quality_film.id_quality = quality.id_quality
JOIN dub_film
ON film.id_film = dub_film.id_film
JOIN dub
ON dub_film.id_dub = dub.id_dub
WHERE
title = parameter;
END$$
DELIMITER ;
|
Вызов:
| |
|
|
|
|
|
|
|
для: Sfinks
(30.05.2014 в 10:08)
| | Спасибо огромное. А ф-цию можешь составить? | |
|
|
|