Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326

Необходимо создать запрос

07.09.2012, 13:02. Показов 1361. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть запрос типа
SQL
1
"select ПОЛЕ1, ПОЛЕ2 from ТАБЛИЦА1 where ПОЛЕ3 = (select ПОЛЕ1 from ТАБЛИЦА2 where ПОЛЕ2 = 'значение')
нужно чтобы в рез-те было и ПОЛЕ1, и ПОЛЕ2 из ТАБЛИЦЫ1 и ПОЛЕ3 из ТАБЛИЦЫ2, которое выбиралось бы по тому же условию, что и запрос в скобках, но чтобы, естесственно, не участвовало в сравнении с ПОЛЕ3 из ТАБЛИЦЫ1
вообщем чтобы было как-то так, но чтобы работало
SQL
1
"select ПОЛЕ1, ПОЛЕ2 from ТАБЛИЦА1 where ПОЛЕ3 = (select ПОЛЕ1, ПОЛЕ3 from ТАБЛИЦА2 where ПОЛЕ2 = 'значение')
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2012, 13:02
Ответы с готовыми решениями:

Необходимо создать запрос в sql
Запрос: Кто из преподавателей каждой из кафедр имеет минимальную учебную нагрузку среди других преподавателей его кафедры? пробовала...

Необходимо создать запрос для 2х таблиц одновременно
Суть задачи вот в чем. У меня есть вот такой запрос SELECT , , , , ...

Необходимо создать запрос
Здравствуйте, необходимо создать запрос, выдающий список предметов и количество оценок 3, 4 и 5 по этим предметам соответственно. При этом...

16
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
07.09.2012, 13:42
Честно говоря, из объяснений ничего не понял, но подозреваю, что тебе нужно обычное соединение (JOIN) таблиц
1
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
07.09.2012, 14:15  [ТС]
Цитата Сообщение от Grossmeister Посмотреть сообщение
Честно говоря, из объяснений ничего не понял, но подозреваю, что тебе нужно обычное соединение (JOIN) таблиц
Скорее всего, c join`ом не умею работать, учиться буду. А пока решил немного разделить запрос, потому что, на самом деле, запрос получается сложнее, не так как написал вначале.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
07.09.2012, 14:46
Примерно в таком духе
T-SQL
1
2
3
select T1.ПОЛЕ1,T1.ПОЛЕ2,T2.ПОЛЕ3
  from ТАБЛИЦА1 T1, ТАБЛИЦА2 T2
  WHERE Т1.ПОЛЕ3=T2.ПОЛЕ1 AND T2.ПОЛЕ2 = 'значение'
1
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
17.09.2012, 03:48  [ТС]
Помогите составить новый запрос
Есть таблица (USP_HOT_STATS) в которой содержаться запись с обозначением элемента и его количеством. Обозначения могут повторятся, и что-бы вывести на экран без повторений, но с корректным подсчетом написал такой запросик:

SQL
1
2
3
SELECT element_title, SUM(elements_count) AS [COUNT]
FROM USP_HOT_STATS
GROUP BY ELEMENT_TITLE;
Всё отлично, но хотелось бы добавить названия к этим элементам. Есть еще одна таблица, где хранятся список всех элементов с однозначной связью между обозначением и наименованием.
В общем, нужно в запрос выше добавить условие равенства element_title из таблицы USP_HOT_STATS с element_title из таблицы2 и вывести element_name из таблицы2, но так чтобы работало
Пробовал добавлять where, inner join, но не заработало вообще. Наверно как-то можно через with as, но 4 часа утра дают о себе знать Помогите, пожалуйста.
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
17.09.2012, 09:33
по какому полю таблицы связаны?
0
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
17.09.2012, 09:48  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
по какому полю таблицы связаны?
По element_title
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
17.09.2012, 11:25
T-SQL
1
2
3
SELECT element_name, SUM(elements_count) AS [COUNT]
FROM USP_HOT_STATS u inner join table2 t on u.element_title=t.element_title
GROUP BY ELEMENT_Name;
1
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
17.09.2012, 13:38  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
T-SQL
1
2
3
SELECT element_name, SUM(elements_count) AS [COUNT]
FROM USP_HOT_STATS u inner join table2 t on u.element_title=t.element_title
GROUP BY ELEMENT_Name;
изменил на
T-SQL
1
2
3
SELECT t.element_name, element_title, SUM(elements_count) AS [COUNT]
FROM USP_HOT_STATS u inner join table2 t on u.element_title=t.element_title
GROUP BY ELEMENT_title
ибо:
1) группировка именно по title, который есть в USP_HOT_STATS
2) а вот name есть только во второй таблице -> поставил t.element_name
Результат: ругается, пишет, что "выражение не является выражением GROUP BY"
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
17.09.2012, 14:30
Цитата Сообщение от Lupus
Результат: ругается, пишет, что "выражение не является выражением GROUP BY"
Не знаю, как в твоей СУБД, но например Oracle требует, чтобы все поля, которые перечислены в SELECT и не входят в групповые функции, были перечислены в GROUP BY. Иначе появляется именно такое ругательство
0
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
17.09.2012, 15:21  [ТС]
Цитата Сообщение от Grossmeister Посмотреть сообщение
Не знаю, как в твоей СУБД, но например Oracle требует, чтобы все поля, которые перечислены в SELECT и не входят в групповые функции, были перечислены в GROUP BY. Иначе появляется именно такое ругательство
Кстати, да, забыл Субд - именно oracle 9
Но если в GROUP BY добавить недостающий t.element_name, запрос ничего не возвращает.
Может как-то можно разделить на несколько запросов или через вложенные сделать?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
17.09.2012, 15:40
если
Цитата Сообщение от Lupus Посмотреть сообщение
inner join table2 t on u.element_title=t.element_title
то индифферентно, что будет в GROUP - title или name

а насчет GROUP Grossmeister тебе все разъяснил
1
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
17.09.2012, 15:40
Цитата Сообщение от Lupus
Кстати, да, забыл Субд - именно oracle 9
Я бы на твоем месте переписал запрос с ANSI-синтаксиса на родной оракловый. ANSI-синтаксис появился в Oracle именно в 9 и содержал массу глюков (они до сих пор даже в Ora 11 встречаются).
По идее, при добавлении еще одного поля в GROUP BY строки исчезнуть не должны, может измениться только их число.

PS
Если речь про Oracle, тогда почему вопрос не в соответствующем форуме?

PPS
А какая версия более точно?
1
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
17.09.2012, 16:16  [ТС]
Цитата Сообщение от Grossmeister Посмотреть сообщение
Я бы на твоем месте переписал запрос с ANSI-синтаксиса на родной оракловый. ANSI-синтаксис появился в Oracle именно в 9 и содержал массу глюков (они до сих пор даже в Ora 11 встречаются).
По идее, при добавлении еще одного поля в GROUP BY строки исчезнуть не должны, может измениться только их число.

PS
Если речь про Oracle, тогда почему вопрос не в соответствующем форуме?

PPS
А какая версия более точно?
Oracle9i Database 9.2.0.1.0

Изначально, хотелось бы, чтобы этот же запрос и под Access работал, но в принципе - это не обязательно, целевая машине - Oracle.
А что за родной оракловый? Где почитать по-понятнее?

По идее, при добавлении еще одного поля в GROUP BY строки исчезнуть не должны, может измениться только их число.
Мне кажется просто число свелось до нуля

P.S. Работаю с базой из .NET
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
17.09.2012, 16:31
Цитата Сообщение от Lupus
Oracle9i Database 9.2.0.1.0
Это еще и версия сама по себе глючная. Вообще начальные релизы каждой версии, которые можно бесплатно скачать с сайта, обычно глючные. Их можно использовать для обучения, тренировки, разработки, но на реальной БД - чревато, на собственный страх и риск. Для того, чтобы использовать на продакшене, обычно скачивают и устанавливают патчи, но для этого Oracle д.б. куплен

Цитата Сообщение от Lupus
Изначально, хотелось бы, чтобы этот же запрос и под Access работал, но в принципе - это не обязательно, целевая машине - Oracle.
К этому стремиться не стоит. Архитектура СУБД у всех разная, поэтому запрос, эффективно отрабатывающий на одной СУБД, м.б. совершенно неэффективен на другой.

Цитата Сообщение от Lupus
А что за родной оракловый? Где почитать по-понятнее?
Выше уже приводили
SQL
1
2
3
4
SELECT *
FROM tab1 T1,
        tab2 T2
WHERE T1.id = T2.id

Цитата Сообщение от Lupus
Мне кажется просто число свелось до нуля
Дело в том, что строки сначала отбираются по условиям в WHERE, а уже потом группируются по GROUP BY. Каким образом при группировке число может свестись к 0? Только если изначально не выбрано ни одной строки, но за это отвечает WHERE, а не GROUP BY. Либо сгруппированные строки м.б. отсечены условием в HAVING, но ведь у тебя его нет

Добавлено через 2 минуты
Цитата Сообщение от Lupus Посмотреть сообщение
P.S. Работаю с базой из .NET
Так сначала проверяй запросы в каком-нибудь средстве типа SQL*Plus, а потом уже пихай в программу, иначе тут могут наложиться глюки самого NET
1
 Аватар для Lupus
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
17.09.2012, 16:42  [ТС]
Все работает, пардон, я ступил, аж стыдно
Спасибо, pincet. Спасибо, Grossmeister.

Единственное не понял про "родной оракловый" - это без join`а что ли?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
17.09.2012, 17:23
Цитата Сообщение от Lupus
Единственное не понял про "родной оракловый" - это без join`а что ли?
JOIN в запросе существует в любом случае. Однако синтаксически конструкции разные
Родной синтаксис Oracle
SQL
1
2
3
4
SELECT *
FROM tab1 T1, 
        tab2  T2
WHERE T2.id = T1.id
Здесь WHERE используется и для условия соединения таблиц, и для доп. условий

ANSI
SQL
1
2
3
SELECT *
FROM tab1 T1 INNER JOIN tab2 T2 
   ON T2.id = T1.id
Здесь WHERE используется только для доп. условий
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2012, 17:23
Помогаю со студенческими работами здесь

Необходимо создать запрос бд «Участие в спорте».
бд «Участие в спорте». В нем отображаются: --фамилия, имя, отчество, --номер группы, --название команды, --вид спорта –...

Необходимо создать запрос по двум таблицам
Здравствуйте! Необходимо создать запрос по двум таблицам. КЛИЕНТ (Код_клиента, Фамилия, Имя, Отчество, Дата_рождения, Гражданство,...

Необходимо создать запрос для ленточной формы
Уважаемые знатоки! Прошу помощи со следующей задачей. У меня есть таблица со ссылками на файлы вне базы данных. Файлы делятся по...

Необходимо создать запрос в Delphi
1. Выбрать все таблетки и мази и их максимальную разрешенную цену, учитывая, что реальная максимальная цена на мази на V % больше указанной...

Необходимо изменить запрос
Люди добрые подскажите... Есть запрос (дописанный), который в списке "состояние обеспечения" выводит только 100% оплаченные заказы....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru