Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.29;
Скачать: CL | DM;

Вниз

SQL запрос   Найти похожие ветки 

 
Сергей   (2015-05-21 15:28) [0]

Уважаемые мастера, есть вопрос. Имеется таблица :
id  p     s     n
1  100  5     200
2  100  5     201
3  100  6     200
Подскажите(если это возможно) как создать единый запрос, если известно, что при первом обращении p=100,s=5,n=200 и 201, а при втором обращении p=100,s=6,n=200


 
кгшзх ©   (2015-05-21 15:32) [1]

а при втором обращении

уточните.
второе обращение луны вокруг земли или солнца вокруг ядра галактики?


 
Сергей   (2015-05-21 15:39) [2]

>кгшзх
А почему первое обращение вопросов не вызвало ? Если можете ответить по существу вопроса - ответьте, если непонятен вопрос - уточните, что именно не понятно. Зачем мусорить эфир.


 
кгшзх ©   (2015-05-21 15:44) [3]

чтобы ответить по существу вопроса, нужно чтобы было само существо вопроса.

а у тебя здесь только детский лепет трехлетнего малыша с какими-то цифрами и обращениями кого-то куда-то или к кому-то.


 
Плохиш ©   (2015-05-21 15:46) [4]


> если непонятен вопрос - уточните, что именно не понятно.

Уточняю, чё хотите получить?


 
Inovet ©   (2015-05-21 15:47) [5]

Телепатирую. Нужен
ORDER BY


 
кгшзх ©   (2015-05-21 15:52) [6]

не угадал.


 
кгшзх ©   (2015-05-21 15:53) [7]

телепатрирую. Нужен параметр и where по "s"


 
Inovet ©   (2015-05-21 15:57) [8]

Тогда 4 параметра и between


 
Сергей   (2015-05-21 16:02) [9]

>Плохиш
А разве я не написал, что хочу получить ? Нужен единый запрос, если это возможно. Исходные данные есть : и содержимое таблицы и то, что имеем при обращении к ней. Что еще я не дописал ?
>кгшзх
Пример запроса написать слабо ?


 
кгшзх ©   (2015-05-21 16:04) [10]

на слабо будешь одноклассниц разводить, вьюноша.


 
Сергей   (2015-05-21 16:14) [11]

>кгшзх
В таком случае хотелось бы увидеть результат, а не пустую болтавню. Получится - респект тебе, взрослый человек :-)


 
Jeer ©   (2015-05-21 16:36) [12]

Сергей   (21.05.15 16:14) [11]

Приведи мысли в порядок и начни все с начала.


 
Сергей   (2015-05-21 16:49) [13]

>Jeer
Начиню сначала. Структура таблицы и ее данные есть выше.
Нужно, чтобы в итоге единого запроса получился набор :
в первом обращении - id=1 и id=2, во втором - id=3. Проблема в том, что n для обоих обращений пересекаются.


 
Jeer ©   (2015-05-21 17:05) [14]

Т.е. ты хочешь, чтобы первый раз 2*3=6, а во второй раз 2*3=5 ?
Дошло?


 
Сергей   (2015-05-21 17:27) [15]

>Jeer
Нет, не так. Я хочу исключить повторяющиеся записи. Есть в таблице : p = 100,
s = 5, n = 200 и 201 и пользователь снова пытается ввести аналогичное. Поэтому и хочу проверить есть ли такое. Если есть - новая запись не создается. Иными словами если p = 100,s = 5, n = 200 и 201, а пользователь выбирает туже комбинацию, то запись не должна создаваться. Но спросить о наличии такой комбинации я хочу в одном запросе(s и n могут меняться). Не хотелось бы прибегать к помощи ХП или анализа в клиенте, хотелось бы сформировать один запрос к уже имеющимся данным.


 
кгшзх ©   (2015-05-21 17:35) [16]

заходят два юзера.
оба хотят вставить 100 7 300
для обоих ты проверяешь комбинацию и обоим сообщаешь, что такой еще нет.
и оба юзера благополучно вставляют свои 100 7 300

/*
а все потому что кто-то не создал констрейнт уникального индекса, а занимается херней с проверками, актуальность результатов которых уже через миллисекунду становится неактуальной */


 
Сергей   (2015-05-21 17:40) [17]

>кгшзх
Остроумие на высоте, а до дела что-то не доходит пока. Пустобрехством заниматься - не мешки ворочать. Так ведь, взрослый человек ? :-)


 
Inovet ©   (2015-05-21 18:14) [18]

> [17] Сергей   (21.05.15 17:40)
> а до дела что-то не доходит пока

Из тебя вытягивают клещами реальную проблему, вытянули нечто уже ближе к реальности, дали ответ, а ты всё ещё не видишь его. Повторю - констрейнт спасёт ОРД.


 
Плохиш ©   (2015-05-21 18:17) [19]


> Сергей   (21.05.15 17:40) [17]
> >кгшзхОстроумие на высоте

ты уже про индексы прочитал? Или так и будишь, как идиот, одно и тоже долдонить?

> Не хотелось бы прибегать к помощи ХП или анализа в клиенте

сколько вумных словей-то.


 
Сергей   (2015-05-21 18:27) [20]

Всем спасибо за никчемные ответы.


 
Inovet ©   (2015-05-21 18:39) [21]

> [20] Сергей   (21.05.15 18:27)

Ну это да - умные благоразумные мальчиши-кибальчиши дают код, а здесь одни плохиши дают никчёмные советы. Жаль.


 
кгшзх ©   (2015-05-21 18:41) [22]

при первом обращении p=100,s=5,n=200 и 201,
а при втором обращении p=100,s=6,n=200


select * from table
where n = case :p_param
               when 1 then 5
               when 2 then 6
               else null
              end

при первом "обращении" (p_param = 1) получим :
100 5 200
100 5 201

при втором "обращении" (p_param = 2) получим :
100 6 200

что и требовалось в идиотском как бы вопросе, как бы детально и как бы конкретно как бы поставленном как бы по существу.


 
Inovet ©   (2015-05-21 18:55) [23]

> [22] кгшзх ©   (21.05.15 18:41)

Ты тоже плохиш, но код дал. Жаль.


 
кгшзх ©   (2015-05-21 19:08) [24]

этот код ему не поможет потому что нужен другой код, даже если проверку уникальности делать с клиента.
потому и дал.


 
Inovet ©   (2015-05-21 19:38) [25]

> [24] кгшзх ©   (21.05.15 19:08)
> этот код ему не поможет

Я же сказал - плохиш.


 
ухты ©   (2015-05-21 20:11) [26]


> что и требовалось
да нет, -

> я хочу в одном запросе(s и n могут меняться).
, т.е. 1 запрос, а у вас уже 2, и только для n


 
кгшзх ©   (2015-05-21 20:22) [27]

да дад.

Вот исходное:

Уважаемые мастера, есть вопрос. Имеется таблица :
id  p     s     n
1  100  5     200
2  100  5     201
3  100  6     200
Подскажите(если это возможно) как создать единый запрос, если известно, что при первом обращении p=100,s=5,n=200 и 201, а при втором обращении p=100,s=6,n=200


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

Сразу после намека оно сказало, что вопрос поставлен предельно точно и полно .

Ну раз предельно точно поставлено, то в [22] предельно точно отвечено.
Могу приложить нотариально заверенный скриншот результата обеих "обращений"


 
ухты ©   (2015-05-21 20:32) [28]

ну так n это те что 200 2001 а у вас 5 6, тоже не правильно, запросы никогда ничего не вернут :)

что человеку надо мне не понятно тоже, скорее всего юники помогут
это я так..


 
кгшзх ©   (2015-05-21 20:49) [29]

о чорт. я же совершил ошибку.


 
Сергей   (2015-05-21 21:12) [30]

Да не ломайте вы копья, ОНО вопрос, вопреки вашим дельным советам, все же решило :-)


 
кгшзх ©   (2015-05-21 21:19) [31]

спасибо не надо. просто будешь должен.


 
sniknik ©   (2015-05-21 21:24) [32]

итоговый запрос покажешь?
может по нему удастся вопрос, что же было нужно, восстановить.


 
Юрий Зотов ©   (2015-05-22 14:40) [33]

>  Сергей   (21.05.15 21:12) [30]

Если ОНО решило вопрос путем проверки на клиенте, то ОНО его НЕ решило. Даже еще хуже - ОНО создало видимость решения, а решения на самом деле нет. И когда-нибудь это обязательно аукнется ошибкой.

Вам уже несколько раз сказали, что нужен constraint. И правильно сказали. Почему Вы не хотите слушать дельные советы - непонятно.


 
~AQUARIUS~   (2015-05-29 15:36) [34]


> Нет, не так. Я хочу исключить повторяющиеся записи.


1. Строите уникальный индекс по (p, s, n)
2. RTFM по вашему движку БД - ищете конструкцию вставки с игнорированием либо вставки с обновлением, все соверменные движки такую имеют.
Например в MySQL есть целые два варианта: INSERT IGNORE и INSERT ... ON DUPLICATE KEY UPDATE. Обе конструкции можно приспособить для игнорирования дубликатов при вставки



Страницы: 1 вся ветка

Текущий архив: 2017.01.29;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.009 c
2-1433181587
e5431
2015-06-01 20:59
2017.01.29
ComboBox: кнопки для удаления на элементах выпадающего списка


15-1457459219
Eraser
2016-03-08 20:46
2017.01.29
Тест выключения монитора


2-1432926299
Илья_666
2015-05-29 22:04
2017.01.29
Blur, реализация


4-1281220286
trw
2010-08-08 02:31
2017.01.29
зная pid вывести все хэндлы этого приложения


2-1432656290
cr@nk
2015-05-26 19:04
2017.01.29
WebBrowser: вставить текст в поля на странице