Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.01.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





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


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


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


2-1432211338
Сергей
2015-05-21 15:28
2017.01.29
SQL запрос


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский