Рождественский запросик

jug
Дата: 05.01.2012 16:41:31
Поздравляю всех участников форума с Новым Годом, хочу пожелать чтоб год был у всех, веселым, добрым и интересным, а также очень удачным, чтоб Вам нравился каждый день этого года. Такс ну с официалкой хорош :) исчерпалсо, теперь под дых как грится.

Есть таблицы:
jug
Дата: 05.01.2012 16:42:48
Есть запрос
SELECT 1 AS nom,Client.id_cl, Client.Фамилия, Client.Имя, Client.Отчество, Client.Проект
FROM Client INNER JOIN Phone ON Client.id_cl = Phone.id_ph
GROUP BY Client.Фамилия, Client.Имя, Client.Отчество, Client.Проект, Client.id_cl, Client.Клиент, Client.Гемор, Client.Умершие
HAVING (((Client.Проект)=[Ведите проект]) AND ((Client.Клиент)=-1) AND ((Client.Гемор)=0) AND ((Client.Умершие)=0));
UNION ALL
SELECT 2 AS nom, Phone.id_ph, Phone.PhoneNum, Null AS Выражение1, Null AS Выражение2, Null AS Выражение3
FROM Client INNER JOIN Phone ON Client.id_cl = Phone.id_ph
GROUP BY Phone.PhoneNum, Null, Null, Null, Null, Client.id_cl, Phone.id_ph, Client.Проект, Client.Фамилия, Client.Имя, Client.Отчество, Client.Клиент, Client.Гемор, Client.Умершие
HAVING (((Client.Проект)=[Ведите проект]) AND ((Client.Клиент)=-1) AND ((Client.Гемор)=0) AND ((Client.Умершие)=0));
UNION ALL SELECT 3 AS nom, Sale.id_sl, Sale.пин, Sale.Дата_доставки, Sale.Сумма, Sale.Состояние
FROM Client INNER JOIN Sale ON Client.id_cl = Sale.id_sl
GROUP BY Sale.пин, Sale.Дата_доставки, Sale.Сумма, Sale.Состояние, Null, Client.id_cl, Client.Фамилия, Client.Имя, Client.Отчество, Client.Проект, Client.Клиент, Client.Гемор, Client.Умершие, Sale.id_sl
HAVING (((Client.Проект)=[Ведите проект]) AND ((Client.Клиент)=-1) AND ((Client.Гемор)=0) AND ((Client.Умершие)=0))
ORDER BY Client.id_cl, nom;
jug
Дата: 05.01.2012 16:45:56
Получается вот такой результат.
jug
Дата: 05.01.2012 16:53:48
Хотелось бы помощи в таких вещах.
ё
Дата: 05.01.2012 16:59:15
ишо "слайды" будут ? или вопрос уже был ? :)
jug
Дата: 05.01.2012 17:12:50
1. Чтоб в выделенном месте записи сортировались по дате.

2. Суть такая клиент обратился и приобрел один товар 01.01.2011, следующий товар он приобрел 01.03.2011, а следующий товар 11.03.2011, однако клиентом компании он стал с момента как он первый раз приобрел.

Надо сделать так, чтоб помимо ввода проекта, была возможность ввести Between [Дата1] And [Дата2] и запрос выводил клиента и все его дальнейшие покупки, однако выбирал только клиентов с первой клиентской покупки.
Человек стал клиентом, он купил первый раз 01.01.2011
второй раз 01.03.2011
третий раз 11.03.2011 если период запрашиваемый пользователем НАПРИМЕР с 01.01.2010 по 28.02.2011 то

выводится ИВАНОВ ИВАН ИВАНОВИЧ
01.01.2011
01.03.2011
11.03.2011

Если же например с 02.01.2011 по любую другую дату то этого клиента запрос не выводит.
Короче говоря выводит только тех клиентов и информацию о их покупках, которые первую покупку сделали в запрашиваемый период.
ё
Дата: 05.01.2012 17:12:54
jug
Хотелось бы помощи в таких вещах.

вопрос в чём ? почему в поле имя выводится дата ?
потому что так запрос кто-то составил

SELECT 1 AS nom,Client.id_cl, Client.Фамилия, Client.Имя, Client.Отчество, Client.Проект
FROM Client INNER JOIN Phone ON Client.id_cl = Phone.id_ph
GROUP BY Client.Фамилия, Client.Имя, Client.Отчество, Client.Проект, Client.id_cl, Client.Клиент, Client.Гемор, Client.Умершие
HAVING (((Client.Проект)=[Ведите проект]) AND ((Client.Клиент)=-1) AND ((Client.Гемор)=0) AND ((Client.Умершие)=0));

UNION ALL

SELECT 2 AS nom, Phone.id_ph, Phone.PhoneNum, Null AS Выражение1, Null AS Выражение2, Null AS Выражение3
FROM Client INNER JOIN Phone ON Client.id_cl = Phone.id_ph
GROUP BY Phone.PhoneNum, Null, Null, Null, Null, Client.id_cl, Phone.id_ph, Client.Проект, Client.Фамилия, Client.Имя, Client.Отчество, Client.Клиент, Client.Гемор, Client.Умершие
HAVING (((Client.Проект)=[Ведите проект]) AND ((Client.Клиент)=-1) AND ((Client.Гемор)=0) AND ((Client.Умершие)=0));

UNION ALL 

SELECT 3 AS nom, Sale.id_sl, Sale.пин, Sale.Дата_доставки, Sale.Сумма, Sale.Состояние
FROM Client INNER JOIN Sale ON Client.id_cl = Sale.id_sl
GROUP BY Sale.пин, Sale.Дата_доставки, Sale.Сумма, Sale.Состояние, Null, Client.id_cl, Client.Фамилия, Client.Имя, Client.Отчество, Client.Проект, Client.Клиент, Client.Гемор, Client.Умершие, Sale.id_sl
HAVING (((Client.Проект)=[Ведите проект]) AND ((Client.Клиент)=-1) AND ((Client.Гемор)=0) AND ((Client.Умершие)=0))
ORDER BY Client.id_cl, nom;

зы
а вообще, запрос - посленовогодний бред
начиная с Фамилия/PhoneNum/пин , Сумма/Отчество
и заканчивая всеми этими GROUP BY/HAVING ...
jug
Дата: 05.01.2012 17:20:03
ё
jug
Хотелось бы помощи в таких вещах.

вопрос в чём ? почему в поле имя выводится дата ?
потому что так запрос кто-то составил

Почему в поле имя вводится дата?
Просто Вид отображения информации о клиенте.
Из первой таблицы выбираются данные о клиенте Фамилия Имя Отчество Проект, из второй телефоны, из третей информация о покупке и когда вы делаете отчет у Вас четко видна инфа по клиенту в столбик.
jug
Дата: 05.01.2012 17:22:58
Это на этом форуме мне кто-то четко объяснил, что хранить данные в одной таблице это глупость посему и появилось 3 таблицы, а как из трех таблиц собрать в читабельный вид информацию о Клиенте это вопрос. Ну и приходиться воять такие запросы.
ё
Дата: 05.01.2012 17:23:05
jug
1. Чтоб в выделенном месте записи сортировались по дате.

2. Суть такая клиент обратился и приобрел один товар 01.01.2011, следующий товар он приобрел 01.03.2011, а следующий товар 11.03.2011, однако клиентом компании он стал с момента как он первый раз приобрел.

Надо сделать так, чтоб помимо ввода проекта, была возможность ввести Between [Дата1] And [Дата2] и запрос выводил клиента и все его дальнейшие покупки, однако выбирал только клиентов с первой клиентской покупки.
Человек стал клиентом, он купил первый раз 01.01.2011
второй раз 01.03.2011
третий раз 11.03.2011 если период запрашиваемый пользователем НАПРИМЕР с 01.01.2010 по 28.02.2011 то

выводится ИВАНОВ ИВАН ИВАНОВИЧ
01.01.2011
01.03.2011
11.03.2011

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

так вывод всего этого добра, так и должен быть в таком наркоманском безумном UNION-виде ??
или можно "по-нормальному" ?

если второе - сделайте форму на таб.Клиенты, и в ней подчинённую на таб.ПокупкиКлиента
и всё ...