Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Составление SQL-запросов > HAVING MAX??? |
Автор: Killer_13 2.11.2011, 18:46 | ||
Я делаю запрос потом сне с запроса нужно найти максимальное значение. Делаю вот так
В строчке нужно обязательно что-то указывать. А если я не знаю какое у меня будет максимальное число? У меня несколько полей с числами - нужно найти максимальное HAVING max(strafen.betrag)>0 Почему просто HAVING max(strafen.betrag) не срабатывает? Спас. |
Автор: Данкинг 2.11.2011, 19:06 |
А не проще сделать запрос с order by... по убыванию и взять top 1 ? |
Автор: Killer_13 2.11.2011, 19:34 |
вариант, но хочется знать как сделать так как я спросил. Если знаете - подскажите пож. |
Автор: Zloxa 3.11.2011, 09:05 | ||
ничтно не мешает его узнать
потому что такая синтаксическая конструкция не корректна |
Автор: Killer_13 4.11.2011, 14:16 | ||
Пасиб. Ваш стиль очень понятен. в этом варианте я почему-то получаю 2 переменных, тоисть должно отобразиться одно поле с максом, а я получаю два, одно с максом, одно другое какое то.. Почему не подскажете?
И еще вопрос, может кто знает где искать или у кого может есть *.chm или *.html справка по всем функциям насколько я читал последнего стандарта SQL 2003. А то я нахожу только мануалы к конкретным базам, мне сейчас не нужно не хочется изучать какую то базу, просто подучить чуток как запросы делаются и функции которые есть у всех базах. |
Автор: Killer_13 4.11.2011, 18:31 |
Думаю не станет, думал, думал и не надумал. Если можете - на пальцах объясните. Пасиб. |
Автор: Zloxa 4.11.2011, 19:11 |
Тогда и объяснения бесполезны. Объяснить нечто очевидное всегда сложнее чем просто пальцем показать. А я вам не подумать предлагал а посмотреть. Сделайте так, чтобы запрос возвращал еще и значение максимума, тогда станет видно, что обе строки отобраны потому, что обе содержат одинаковое значение максимума. |
Автор: Killer_13 4.11.2011, 19:41 | ||||||||
Стараюсь вникнуть в ваши слова. Нет, не одинаковые значения. Исходя из данного запроса у меня выведется 2 столбика в первом имя, во втором максимальное значение. Постановка задачи такова. Есть 2 таблички spieler и strafen
вот как выгл табличка strafen
Нужно вывести имя у кого наибольшая сума sum(strafen.betrag) В данном случае это имя номера 10 |
Автор: Zloxa 4.11.2011, 19:58 | ||
Это же уже совсем другая задача.
А позвольте поинтересоваться, а чем вас не устроено решение, предложенное Данкингом? |
Автор: Killer_13 4.11.2011, 20:39 | ||||
Честно признаться - не помню. Может потому что не слышал такого от препода. ![]() Тем не менее , я оч много разобрался, и ваш стиль запроса я для себя запомнил. ![]() И есть уже 2 варианта решения. ![]() Вот так как он говорил.
|
Автор: Данкинг 4.11.2011, 20:41 | ||
Не помнишь чего? ![]() |
Автор: Killer_13 4.11.2011, 20:42 |
Люди говорили что на SyBase TOP не работает, оказывается - работает. Добавлено через 3 минуты и 2 секунды ![]() ![]() Пасиб. ![]() |
Автор: Zloxa 4.11.2011, 20:46 |
Надо понимать, что эти запросы не эквивалентны. А вот если к top добавить WITH TIES... они станут давать эквивалентный результат, и подзапрос с TOP, на современном этапе развития оптимизаторов, будет производительнее, но он опирается на особенности платформы и не соответствует стандартам sql |
Автор: Killer_13 4.11.2011, 20:52 | ||
может потому и не хотел. ![]() иду читать что это для начинающего сойдет, спасиб за предостережение. |
Автор: Killer_13 4.11.2011, 21:46 | ||
разбирал вашу строчку, насколько я читал и понимаю, то после запроса можно ставить новое имя таблицы например AS <имя> или без AS, почему у меня запрос ложится когда я хочу убрать "s" в конце? Мы ж ее нигде не используем... можно же без нее обойтись... |
Автор: Самозванка 4.11.2011, 23:33 |
All subqueries in the FROM clause must be aliased to something, anything, otherwise you'll get an error. |
Автор: Данкинг 4.11.2011, 23:35 |
Самозванка, наверное, подобное СУБД-зависимо всё же. На фоксе подзапросы и без алиасов отлично работают. |
Автор: Самозванка 4.11.2011, 23:57 |
Автор: Killer_13 5.11.2011, 00:04 |
Внятное объяснение, понятно |