|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.05.2012, 01:16 | #1 |
Регистрация: 14.05.2012
Сообщений: 3
|
Написание SQL-запроса (level beginner)
Здравствуйте, форумчане, только начинаю изучать SQL и столкнулся с проблемой.
Есть 2 таблицы - таблица препаратов (drug), содержащая поле "наименование препарата" (NAME) и таблица поставщиков (distributor), содержащая поля "имя поставщика" (DIST_NAME) и "наименование препарата" (DRUG_NAME), который поставляется этим поставщиком (масло масляное) Никак не получается напиcать запрос, который бы выводил Поставщиков, которые никогда не поставляли конкретный препарат. Т.е. допустим содержимое таблиц такое: drug *****| NAME-| -------| aaaa--| bbbb--| cccc--| *****| distributor |*********************| |DIST_NAME--|DRUG_NAME--| |---------------------------| |-1-----------|-aaaa-------| |-1-----------|-bbbb-------| |-1-----------|-cccc-------| |-2-----------|-bbbb-------| |-2-----------|-cccc-------| |-3-----------|-aaaa-------| |*********************| Поставщик 1 пославлял все имеющиеся в базе препараты, следовательно его выводить не нужно, поставщик 2 не поставлял препарат аааа, значит выводим его с соответствующим препаратом и поставщик 3 не поставлял препараты cccc и bbbb, тоже выводим. И на выходе должна быть такая таблица |******************| |-2-----------|-aaaa---| |-3-----------|-bbbb---| |-3-----------|-cccc---| |******************| Подскажите, пожалуйста, как написать запрос? |
14.05.2012, 09:55 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
1-х, структура БД у вас не очень правильная (она не нормализована!)
2-х, запрос жуткий. Если в таблице лекарств будет большое количество записей, а поставщики поставляют одно-два-три лекарства, то количество записей в выборке будет фактически порядка КоличествоПрепаратов*КоличествоПост авщиков да и смысл НЕ очень понятен. ну, попробуйте такой запрос: Код:
За правильность запроса я НЕ ПОРУЧУСЬ! да и ресурсов (если он вообще работает) он должен "жрать" просто немерянно! Последний раз редактировалось Serge_Bliznykov; 14.05.2012 в 10:36. |
14.05.2012, 10:01 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
14.05.2012, 10:37 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
14.05.2012, 11:31 | #5 |
Регистрация: 14.05.2012
Сообщений: 3
|
На самом деле это только кусок базы, я выдрал именно тот, с которым (думал) нужно непосредственно работать.
Нижу прикрепил всю структуру. Serge_Bliznykov, я пробовал так писать, запрос выдаёт каждого поставщика с каждым лекарством (вообще с каждым) в 3-х экземплярах. Вот таблицы (пример и внизу прикреплённый результут запроса): ---------------distributor_provides_drug---------------------------|-------------------drug--------------------- |
14.05.2012, 12:33 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно еще так попытаться, не факт, что прокатит При больших объемах информации очеь плохой запрос, да и результат тоже, согласен с Сергеем
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
14.05.2012, 19:09 | #7 |
Регистрация: 14.05.2012
Сообщений: 3
|
Аватар, спасибо вам большое, прокатило!
U1 - это вы некую таблицу ввели промежуточную? Где можно конкретно об этом почитать и что загуглить? |
14.05.2012, 19:18 | #8 | |
Форумчанин
Регистрация: 26.03.2012
Сообщений: 665
|
Цитата:
|
|
14.05.2012, 19:37 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
На заборе написали - U1 это псевдоним вложенного запроса А почитать MSDN по SQL, гуглить-гуглить, можно и на русском нагуглить многое
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
оптимизация sql-запроса | Vetra | SQL, базы данных | 0 | 20.07.2011 13:36 |
AdoQuery, подскажите правильное написание запроса | salima | БД в Delphi | 1 | 11.12.2009 16:42 |
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) | Schutze | Помощь студентам | 6 | 29.11.2009 22:15 |
Написание SQL-запросов | tsergey | Помощь студентам | 9 | 12.02.2009 11:17 |