 |
 |
Форум сетевых администраторов » Базы данных » MySQL » Вопросы по MS SQL Server
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник+
|
quote: "вид"="представление"?
Да.
[QUOTE]А не... |
[сооб. #80226]
13-01-2006 10:15 |
|
Участник+


Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус:  |
quote: "вид"="представление"?
Да.
quote: А не лучше ли сделать функцию для выборки таких результатов
и
А он возьмёт значения для WHERE "извне"?..
В этом случае нужно использовать хранимую процедуру.
(тот же вид, но с параметром )
quote: он выбирает не все записи из таблицы structura_kks, а только те, к которым есть привязка из contr_zadania
Логично, т.к. поля записей, которые не привязаны содержат NULL.
Используй в условии отбора
code:
__________________
Тест - проверка верности!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
13-01-2006 10:15 |
|
|
Участник+
|
Viktor не... нифига не работает!..
Может плохо... |
[сооб. #80371]
24-01-2006 15:51 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Viktor не... нифига не работает!..
Может плохо объяснил:
Таблица structura_kks это список подразделений
Таблица contr_zadania содержит задания для стр. подразделений привязанные по id. НО не для всех подразделений установлены задания, а так же для одного стр. подразделения могут быть установлены задания на несколько лет! Надо выбрать все стр. подразделения и задания на один год...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
24-01-2006 15:51 |
|
|
Участник+
|
У меня работало...
Как вариант, кинь нужные... |
[сооб. #80382]
25-01-2006 11:35 |
|
|
Участник+
|
В приложении 2 табл.
Про требуемую выборку... |
[сооб. #80385]
25-01-2006 12:34 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
В приложении 2 табл.
Про требуемую выборку я написал чуть выше...
Заранее благодарен за помощь!!!
he][es добавил 25-01-2006 в 12:46:50:
Ваабще ничего не могу понять, выбирается, и вроде бы даже то что надо, НО почему то из табл. structura_kks выводятся не все строки!
Не выводятся те строки для которых указаны контр.задания (табл. contr_zadania) на прошлый (к примеру) год. Т.е. те где не contr_zadania.kz_to_year = '2006'
Файл: tables.rar
Был скачан 4 раз(а).
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
25-01-2006 12:34 |
|
|


Участник+
|
Все чудненько работает 
[CODE]SELECT structura_kks.id,... |
[сооб. #80390]
25-01-2006 18:55 |
|
Участник+


Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус:  |
Все чудненько работает 
code:
Проблема была в том, что ты условие ставил не по тому полю.
Ты использовал contr_zadania.kz_to_year, а нужно contr_zadania.kz_year.
В том у тебя цифры явно к году не относящиеся (например 15000)
Для безошибочности и лучшего понятия условия сервером можно условие записать так
code:
__________________
Тест - проверка верности!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
25-01-2006 18:55 |
|
|
Участник+
|
| Viktor я прошу прощения за некую дезинформацию,... |
[сооб. #80391]
25-01-2006 21:13 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Viktor я прошу прощения за некую дезинформацию, но у меня тут поля просто попереименовались... Т.что я всё правильно писал...
При таком запросе выводятся не все записи из таблицы structura_kks, НЕ выводятся те для которых установлены задания (табл. contr_zadania) не удовлетвор. условию... Т.е. в данном случае строки 1 и 2. (там в таблицах для них есть задания на 2005 год)...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
25-01-2006 21:13 |
|
|
Участник+
|
| [quote]НЕ выводятся те для которых установлены... |
[сооб. #80432]
28-01-2006 13:08 |
|
Участник+


Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус:  |
quote: НЕ выводятся те для которых установлены задания (табл. contr_zadania) не удовлетвор. условию...
Ну так и не надо ставить условие = 2006 если нужны данные и за другие годы.
__________________
Тест - проверка верности!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
28-01-2006 13:08 |
|
|
Участник+
|
Viktor вы меня не правильно поняли...
К примеру... |
[сооб. #80438]
28-01-2006 18:31 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Viktor вы меня не правильно поняли...
К примеру для записи №4 в таблице structura_kks установлено задание (табл. contr_zadania) на 2005 год, и при запросе с условием = 2006, строка №4 из structura_kks ВООБЩЕ не выведется...
А мне нужно что бы если для 4ой строки небыло подходящего задания (=2006) то выводилась инф-ия из structura_kks.
Те.
structura_kks
1 - запись1
2 - запись2
3 - запись3
4 - запись4
contr_zadania
1 - 2 - 2006 - 20000
2 - 3 - 2006 - 34445
3 - 1 - 2005 - 56784
При таком раскладе после запроса мы получим
запись2 - 20000
запись3 - 34445
запись4 - null
А первой записи НЕТ... Теперь понятно?
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
28-01-2006 18:31 |
|
|
Участник+
|
| Если я правильно понял, то значения из contr_zadania... |
[сооб. #80484]
02-02-2006 09:43 |
|
Участник+


Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус:  |
Если я правильно понял, то значения из contr_zadania должны быть только для 2006 года, а для остальных записей из structura_kks Null?
Если так, то вот вариант
code:
Вложенный запрос выбирает данные из contr_zadania за нужный год, а потом объединяет их с structura_kks.
Выводятся все записи и где не 2006 - Null.
__________________
Тест - проверка верности!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
02-02-2006 09:43 |
|
|
Участник+
|
И снова здравствуйте 
Такой казалось бы... |
[сооб. #81300]
30-03-2006 11:05 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
И снова здравствуйте 
Такой казалось бы простой запрос, а не работает...
Таблица1:
id, type, price
Таблица2:
id, title
надо первую сгруппировать по type посчитать SUM(price) и проименовать эти группы из Табл.2... (как вы догадались id Т.2 это те самые type из Т.1)
Делаю:
SELECT structura_dohodov.id, SUM(dohodi.total_price_nds) AS dohodi_total FROM dohodi INNER JOIN structura_dohodov ON (dohodi.structura_dohodov_id = structura_dohodov.id) WHERE (dohodi.structura_kks_id = 4) AND (YEAR(dohodi.data_dohoda) = '2006') GROUP BY structura_dohodov.id
И всё казалось бы хорошо и счастье близко, но если я вставлю structura_dohodov.title он грязно выругается на то что его нет в гроуп, а туда его ставить нельзя т.к. оно типа text...
Вот такой затык. Что делать?
he][es добавил 30-03-2006 в 11:14:02:
З.Ы. GROUP BY dohodi.structura_dohodov_id тоже не проканывает...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
30-03-2006 11:05 |
|
|
Участник+
|
| [quote]а туда его ставить нельзя т.к. оно типа... |
[сооб. #81302]
30-03-2006 11:41 |
|
Участник+


Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 617
Статус:  |
quote: а туда его ставить нельзя т.к. оно типа text...
Логично.
Поля типа ТЕХТ (для хранения БОЛЬШИХ текстовых данных (до 2 Гб)) в группировке использовать нельзя. 
Замени тип данных на VARCHAR(n), где n - до 8000 символов.
quote: GROUP BY dohodi.structura_dohodov_id тоже не проканывает...
Тоже логично...
Если в сроке запроса до агрегатной функции (SUM()) стоит
SELECT structura_dohodov.id,
то и в группировке должно быть structura_dohodov.id!!!
Если менять тип данных в падло или нельзя, то создай вид (представление) на основе своего запроса
SELECT structura_dohodov.id, SUM(dohodi.total_price_nds) AS dohodi_total FROM dohodi INNER JOIN structura_dohodov ON (dohodi.structura_dohodov_id = structura_dohodov.id) WHERE (dohodi.structura_kks_id = 4) AND (YEAR(dohodi.data_dohoda) = '2006') GROUP BY structura_dohodov.id
А потом сделай новый запрос, выбирающий данные из вида и structura_dohodov.title

__________________
Тест - проверка верности!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
30-03-2006 11:41 |
|
|
Участник+
|
Иначе никак?... :/ ладно... поменяю тип =)
(я всё... |
[сооб. #81307]
30-03-2006 13:08 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Иначе никак?... :/ ладно... поменяю тип =)
(я всё парюсь с типами данных... Нигде чётко не могу найти описаний..)
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
30-03-2006 13:08 |
|
|
Участник+
|
quote: Нигде чётко не могу найти описаний
Так... |
[сооб. #81311]
30-03-2006 15:12 |
|
|
|
Формат времени GMT. Текущее время 20:10.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.01557207 seconds (48.04% PHP - 51.96% MySQL) with 26 queries.
|
 |