
Допустим у вас есть входящий параметр "ModerationStatus" который отвечает за фильтр результатов выборки. В зависимости от этого параметра вам нужно показывать или все строки из таблицы или только некоторые.
Вот пример того, как это можно сделать с наименьшими усилиями:
CREATE PROCEDURE `Photo_Get_List`(ModerationStatus tinyint(1))
BEGIN
SET @query = 'SELECT * FROM Photos';
IF ModerationStatus IS NOT NULL THEN
SET @query = CONCAT(@query, ' WHERE ModerationStatus = ', ModerationStatus);
END IF;
PREPARE statement FROM @query;
EXECUTE statement;
DEALLOCATE PREPARE statement;
SQL Profiler встроен в сервер базы данных и может быть динамически включен/выключен при помощи любой утилиты MySQL. Чтобы начать анализ запросов просто выполните следующую команду:
set profiling=1;Одна из тех мелочей, которые не критичны в использовании, но довольно полезны: GROUP_CONCAT - функция, которая возвращает элементы строк как одну строку с разделителем (по-умолчанию - запятая). Например:
SELECT GROUP_CONCAT(ID), type FROM `User` GROUP BY type;SELECT GROUP_CONCAT(DISTINCT County ORDER BY Country SEPARATOR '; '), type FROM `User` GROUP BY type;