Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: процедуры и функции
 
 автор: ubahuba   (25.05.2014 в 22:20)   письмо автору
 
 

Доброго времени суток. Помогите, пожалуйста, сделать из запроса:

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'

функцию или процедуру. И еще объясните, что лучше: ф-ция или п-ра? Заранее благодарю.

  Ответить  
 
 автор: cheops   (26.05.2014 в 00:20)   письмо автору
 
   для: ubahuba   (25.05.2014 в 22:20)
 

1. Погодите, а вы для каких целей собираетесь оформлять запрос в виде процедуры или функции?
2. Функция хороша тем, что возвращает значение и может легко встраиваться в другие запросы, процедура вызывается при помощи специального ключевого слова CALL, в запросы её встроить нельзя.

  Ответить  
 
 автор: Rikone   (29.05.2014 в 11:24)   письмо автору
 
   для: cheops   (26.05.2014 в 00:20)
 

Хочу отделить sql от php кода, это во-первых, а во-вторых, говорят, что ф-ции и п-ры снижают нагрузку. Вот и прошу помощи.

  Ответить  
 
 автор: Sfinks   (29.05.2014 в 21:30)   письмо автору
 
   для: Rikone   (29.05.2014 в 11:24)
 

> а во-вторых, говорят, что ф-ции и п-ры снижают нагрузку. Вот и прошу помощи.
Это не так. Функции и процедуры нужны тогда, когда вы без них не можете сделать какую-то выборку на уровне SQL, и вам приходится сперва сделать один запрос, потом в интерпретаторе получить результат, потом сделать второй запрос и т.п. И еще "лучше", если это происходит в цикле. В данном случае вы (на сколько я вижу) обошлись одним запросом. В такой ситуации лучше не прибегать к хранимым функциям и процедурам, т.к. вы скрываете от себя же (или от других разработчиков, если вы работаете в команде) значительную часть кода, который (возможно) придется когда-нибудь править.

  Ответить  
 
 автор: ubahuba   (29.05.2014 в 22:22)   письмо автору
 
   для: Sfinks   (29.05.2014 в 21:30)
 

Я работаю один, а поправить код труда не составит. Так вы мне можете помочь составить ф-цию?

  Ответить  
 
 автор: Sfinks   (30.05.2014 в 10:08)   письмо автору
 
   для: 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 ;

Вызов:
CALL any_name('$cinema')

  Ответить  
 
 автор: ubahuba   (30.05.2014 в 11:21)   письмо автору
 
   для: Sfinks   (30.05.2014 в 10:08)
 

Спасибо огромное. А ф-цию можешь составить?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования