![]() |
|
Модераторы: skyboy |
![]()
|
|
| lestat89 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.11.2014 Репутация: нет Всего: нет |
Здравствуйте, Ув. Форумчане!
Всю голову изломал как сделать такой запрос, буду краток: БД: В приложенном файле Таблица: STRUCTURE Необходимо: мммм.... напишу наверное ввиде неправильного запроса что бы было понятно: SELECT ID, NAME, POD, (SELECT COUNT(*) FROM STRUCTURE WHERE POD=ID) FROM STRUCTURE WHERE (POD = @structureIndex) то есть все данные и количество связей. То что это возможно не возможно я так же понимаю, но все же... p.s.: И наверное поясню суть Таблица STRUCTURE - Это структура предприятия ID - итак понятно (АИ) NAME - Ее название POD - Это ID подструктуры, т.е. одна структура может быть вложена в другую и при их выводе (когда показаны главные структуры (POD=0) Хотелось бы сразу значть сколько каждая структура содержит подструктур. Все это я делаю в MVS 2013 C# БД: FireBird Это сообщение отредактировал(а) lestat89 - 17.11.2014, 22:47 Присоединённый файл ( Кол-во скачиваний: 4 )
Безымянный.gif 114,71 Kb |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
А почему Вы думаете, что Ваш запрос -- неправильный?
Добавлено через 35 секунд Ну, то есть там максимум можно COALESCE добавить, но это во многом эстэтство. Добавлено через 1 минуту и 6 секунд А, не, туплю конечно. В подзапросе табличку надо переименовать и обращаться только по полному имени (alias.field). |
|||
|
||||
| lestat89 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.11.2014 Репутация: нет Всего: нет |
Потому что студия ругается на него. Пробовал, ничего не меняется. Добавлено через 2 минуты и 23 секунды Возможно правильно SELECT *, COUNT(*) FROM STRUCTURE WHERE pod=@Param GROUP BY NAME Но студия пропускает только SELECT *, COUNT(*) FROM STRUCTURE WHERE pod=@Param GROUP BY NAME, ID,POD Добавлено через 3 минуты и 22 секунды Хотя я не уверен, мне же нужно для каждого id каждой строки посчитать сколько других строк на этот id ссылаються |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Добавлено через 5 минут и 25 секунд Правильно. Поле выходного набора, не являющееся аргументом групповой функции, ОБЯЗАНО быть полем группировки. Добавлено через 6 минут и 57 секунд PS. НИКОГДА не ставь в списке полей выходного набора запроса с группировкой звёздочку. Как только в структуру будут внесены изменения - все запросы немедленно перестанут работать. Перечисляй поля явно, не переломишься. Это сообщение отредактировал(а) Akina - 18.11.2014, 08:56 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| tzirechnoy |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Вот только во внешнем запросе нет никакой группировки, а во внутреннем единсвенное поле -- результат групповой функцыи count(*).
В count(*) всегда так делаю. |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Это обычная невнимательность. Посмотри, о чём именно я говорил. Пора бы научиться отличать список выходного набора от аргумента групповой функции. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| lestat89 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.11.2014 Репутация: нет Всего: нет |
Ну код нужен с WHERE, я добавил это и получилось
Результат 0 строк. Т.е. не получаю никаких данных вообще. -------------------------------------------------- И все равно в запросе не очень то. Мне нужен результат стандартного select * from structure where pod=@Param и плюс к каждой возращаемой строке еще один столбец в результате которого select count(*) from structure where pod=ID_текущей_строки В одном запросе. Реально ? Это сообщение отредактировал(а) lestat89 - 18.11.2014, 16:55 |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
У меня такое впечатление, что Вы мне лапшу на уши вешаете.
Правда, у меня нет файрбёрда, проверял в MySQL, вот цитата с консоли:
Но в данном случае не используется ничего, что было бы по-разному в этих двух диалектах, на файрбёрде должно быть абсолютно так же, с точностью до особенностей синтаксиса. Добавлено через 11 минут и 12 секунд Нашёл, где у меня в сети есть файрбёрд. Версия 2.5. Создал ту же структуру. Внёс те же данные. Выполнил те же запросы. Получил абсолютно те же результаты. Вывод неутешителен. Для Вас... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| lestat89 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.11.2014 Репутация: нет Всего: нет |
Да, Вы правы!!! )
Банально не работало из-за регистра в названии таблиц. Все сделал, примного благодарен! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Эммм... я бы покопался в настройках сервера и, если таковая есть, отключил эту регистровую зависимость. Случаев, когда она реально нужна, мне лично встречать пока не доводилось. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |