Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сранение 1-ого поля с другим полем 
:(
    Опции темы
Delphist
  Дата 25.5.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Как средствами sql написать запрос позволяющий сравнить группу значений
одного поля с группой значений другого.
Опрератор in умеет сравнивать только так 2 in (2,4), а если надо
сравнить (3,8) in (3,10,5) то ...?



--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Петрович
Дата 26.5.2005, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: нет
Всего: 55



Что то я не понял. Ты имеешь в виду пересечение множеств?



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Akina
Дата 26.5.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Delphist @ 25.5.2005, 19:16)
а если надо сравнить (3,8) in (3,10,5) то ...

То надо глаза лечить. Сорри.

В конкретном поле конкретной записи бывает только одно значение.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ТоляМБА
Дата 27.5.2005, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 5
Всего: 252



ПЛЗ. Конкретнее опиши задачу - поля в одной табле или в разных. Небольшой примерчик give
PM   Вверх
Delphist
Дата 30.5.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата
ПЛЗ. Конкретнее опиши задачу - поля в одной табле или в разных. Небольшой примерчик give

Задача следующая. Имеется БД со сведениями о студентах. Необходимо найте всех студентов
оценки которых точно совпадают с оценками студента имеющих идентификатор 12.
БД прилагается:

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  BD.rar


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akina
Дата 30.5.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Это все здОрово... но понятнее не стало... вместо скринов таблиц дай их структуру и связи... впрочем на ТАКОЙ структуре задача просто не решается - потому как количество оценок у отдельно взятого студента есть величина (формально) переменная, следовательно текст запроса надо строить динамически... вернее можно развлечься с выборкой из перекрестного запроса, связанного с простым запросом - но это будет страшненько...

ИМХО лежит тебе дорога в сторону написания хранимой процедуры.

Алгоритм (приблизительно):

Принимаем ID студента
Делаем SELECT, получаем перечень его оценок ([Оценка 1], [Оценка 2], ...)
Делаем SELECT, получаем количество предметов вообще
Динамически строим запрос на получение перекрестной таблицы типа (ID студента, [Оценка по предмету 1], [Оценка по предмету 2], ...) с соотв. фильтром (Where [Оценка по предмету 1] = [Оценка 1] AND ...).
Выдаем результат


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Delphist
  Дата 30.5.2005, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Akina @ 30.5.2005, 15:32)
Это все здОрово... но понятнее не стало... вместо скринов таблиц дай их структуру и связи... впрочем на ТАКОЙ структуре задача просто не решается - ...
ИМХО лежит тебе дорога в сторону написания хранимой процедуры.

Алгоритм (приблизительно):

Принимаем ID студента
Делаем SELECT, получаем перечень его оценок ([Оценка 1], [Оценка 2], ...)...

Akina ты хочешь сказать что через select запросы сделать ни как не получится. Т.е. обязательно надо использовать процедуру.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akina
Дата 30.5.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Delphist @ 30.5.2005, 17:01)
ты хочешь сказать что через select запросы сделать ни как не получится

Ну почему... получится... просто это будет ГРУДА вложенных селектов с внутренними проверками и использованием встроенных функций, повязанная джойнами, к тому же жестко привязанная к существующему на текущий момент количеству предметов в таблице предметов...

Понимаешь, структура твоей БД не приспособлена для ТАКОЙ выборки ну просто никак...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Delphist
  Дата 30.5.2005, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Akina @ 30.5.2005, 16:26)
[QUOTE=Delphist, 30.5.2005, 17:01]Понимаешь, структура твоей БД не приспособлена для ТАКОЙ выборки ну просто никак...

А что нужно поменять в стуктуре таблиц, чтобы упростить запрос!


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akina
Дата 30.5.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Delphist
Да понимаешь фигня-т какая... структура-то твоя правильная... а вот задача в том виде, в каком она поставлена, ни в какие ворота не лезет...

Можно полюбопытствовать - какая польза от такого запроса? какой смысл вылавливать таких "двойников"? что с этим списком потом можно сделать? просто я не один год замдекана был - и никак не могу найти приложения такой задаче...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Delphist
  Дата 30.5.2005, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Akina @ 30.5.2005, 17:08)
Delphist
Можно полюбопытствовать - какая польза от такого запроса? какой смысл вылавливать таких "двойников"? что с этим списком потом можно сделать? просто я не один год замдекана был - и никак не могу найти приложения такой задаче...

В общем сталкнулся я с этой задачей в университете. У нас был курс по SQL. В книжке по которой мы учились содержала задание это задание. У препода спросил он не смог сделать! А я не как не могу успокоится как же делаются задачи такого рода!


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akina
Дата 30.5.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Delphist @ 30.5.2005, 18:53)
как же делаются задачи такого рода

Через PIVOT TABLE. Однако у тебя задача усложнена необходимостью выборки по совпадению с одной из строк сводной таблицы.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Delphist
  Дата 30.5.2005, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Akina @ 30.5.2005, 17:58)
Цитата(Delphist @ 30.5.2005, 18:53)
как же делаются задачи такого рода

Через PIVOT TABLE. Однако у тебя...

Что такое PIVOT TABLE


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
ТоляМБА
Дата 31.5.2005, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 5
Всего: 252



2 Delphist
Цитата
У препода спросил он не смог сделать!

Сорри за оффтоп. Но послушай мой совет. Даже если решишь эту задачу - преподу не говори. От этого не ты поднимешься в его глазах, а он опустится. Делай выводы чем это будет чревато.
PM   Вверх
Delphist
  Дата 31.5.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата
Сорри за оффтоп. Но послушай мой совет. Даже если решишь эту задачу - преподу не говори. От этого не ...

Вся эта канетель не для препода, а для себя лично. Просто интересно увидеть код выполняющий мою задачу.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.