Выборка из базы уникальных значений по нескольким параметрам

Resurs

Новичок
Выборка из базы уникальных значений по нескольким параметрам

День добрый.

Проблема такая.
Есть таблица содержащая данные о клиентах
id | name | notice | year | big_im | sm_im
В нее соответственно заносятся данные -
название компании, описание сделанной работы, год , в которм эта работа была выполнена, большой рисунок и превьюшка к нему.

Для одного клиента может быть несколько выполненных работ как в один и тот же год, так и в разные года
(например, для клиетна1 в2003 г. - 4 проекта, в 2002- 1, а в 2000 -5
для клиетна2 в 2003 г. - 2 проекта, в 2002- 2, а в 2000 -2
для клиетна3 в 2002- 2, в 2000 -2).

На странице где выводятся списки клиентов сделана разбивка по годам - т.е для 2003 будет выведен список из 2 клиентов (хотя записей для 2003 года - 6), а для 2002 из 3-х(всего 5 строк).

Собственно проблема в том, что для каждой позици в таблице описание с картинками может быть, а может и не быть.
Если есть хоть одно описание с картинкой для клиента за этот год, позиция выводится как ссылка на страницу с подробным описанием и списком всех работ для этого клиента за все года с превью, если нет то просто его(клиента) название.

О путях решения.
Пробовал делать так:
PHP:
$result = mysql_query("SELECT *  FROM clients WHERE year ='$year' GROUP BY name ORDER BY id DESC")
Но такой запрос не дает гарантии, что будут выведены только записи с описаниями. DISTINCT работает почти аналогично.
Введение условия
PHP:
notice ='$notice'
, соответсвенно отрезает клиентов для которых нет описаний в данном году ни в одном проекте.

Можно ли еще на этапе выборки из базы отсортировать данные по условию наличия/отсутсвия описания и вывести 1 любую запись с описанием для данного года и клиента, а если таковых не нашлось, любую запись без описания для данного года и клиента соответсвенно.

Все это наверно слишком путанно описано, но в голова уже опухла и нифига не соображает. Помогите пож. кто чем может.

PHP4.0 mySQL 3.23.54
 

Demiurg

Guest
что находится в полях
year | big_im | sm_im
в случает осутсвия картинок/описания ?
 

zerkms

TDD infected
Команда форума
может я неправильно понял смысл вопроса, но я бы сделал так:
$result = mysql_query("SELECT * FROM clients WHERE year ='$year' GROUP BY name ORDER BY id DESC, notice DESC")
а перед выводом проверять notice == null и дальше действовать по обстоятельствам
 

Resurs

Новичок
Originally posted by Demiurg
что находится в полях
year | big_im | sm_im
в случае осутсвия картинок/описания ?
Поле year всегда заполняется (там год), а поля big_im и sm_im, если нет описания, соответсвенно тоже пустые.
 

Resurs

Новичок
notice - это собственно и есть описание. Если его нет - то оно(поле) пустое.
 

Demiurg

Guest
вообщем идея такая:
SELECT name ,
sum(if(notice='',0,1))
FROM clients WHERE year ='$year' GROUP BY name ORDER BY id DESC

получаешь уникальные имена и количество описаний для каждого.
 
Сверху