Форум: "Начинающим";
Текущий архив: 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