Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Открыть новую тему     Написать ответ в эту тему

dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2

Цитата:
Проблема в том, что select ничего в базе данных не изменяет. Ни временно, ни постоянно. Это и буду объяснять.  

А я ведь и не говорил об изменении базы. Речь шла об изменении значения поля.  
Писалось не для вас, а для ничего не знающего юзера, который не может толком объяснить что ему надо.  
Для вас не изменяет. Для меня не изменяет. А вот юзер не различает очень часто visual representation от реального изменения данных.  
Поэтому не морочьте мне больше голову, правдоборец вы наш.  
Человек меня понял, ответил и получил то, что ему надо было.  
Потому что разговор шел на его уровне. И если вы этого не понимаете, то продолжайте воевать с мельницами.
 
Добавлено:
Alexzzy
Ну, я ведь честно пытался предупредить tahirg о возможных неприятностях.  
Ничего страшного. Восстановит из копии и приобретет опыт.
Хотя, он упомянул, что данные перенесены в table из разных источников вместе с ID.
Т.ч., или все уже сломано, или ID чисто декоративное.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 16:24 18-04-2017 | Исправлено: dneprcomp, 17:49 18-04-2017
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare

Цитата:
товарищи знатоки SQL, можете дать наглядный пример, когда в жизни пригождается Left Join?

Если нужно отобрать записи для которых нет связанных в подчиненной таблице

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 16:27 21-04-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33
Молодца! А где наглядный пример?))

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 16:56 21-04-2017
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
нет связанных в подчиненной таблице
Подчинённость таблиц здесь ни при чём.
Из названия понятно, что есть левая таблица (т.е., перечисленная первой в списке таблиц, т.к. мы пишем слева направо) и правая таблица. Из левой таблицы берутся все записи, из правой - только те, которые соответствуют записям левой таблицы. Если в правой таблице нет записей, соответствующих записям левой таблицы, то вместо значений правой таблицы берутся NULL.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 10:57 24-04-2017
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy
Цитата:
Молодца! А где наглядный пример?))  

select
  t1.Id,
  t2.id
 
from
  t1
  left join t2 on (t1.id = t2.id )
where
t2.id is null
 
выбрать только данных которых нет в второй таблице
 

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 15:49 24-04-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33
Вопрос был не по документации, а "наглядный пример, когда в жизни пригождается..."

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 22:00 24-04-2017
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy, жизнь у всех разная, и пример, приведённый SIgor33 в моей жизни иногда пригождается - выбор данных T1, которых нет в T2. Данный конкретный пример можно решить более наглядным запросом:
select * from t1 where id not in (select id from t2)
Какой запрос эффективнее - зависит от СУБД, оптимизатора и набора данных. Но пример с LEFT JOIN вполне может использоваться в жизни.
 

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 10:06 25-04-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста, как написать SQL-запрос.
Думаю, для опытных специалистов это будет нетрудно.
 
Есть одна таблица такой структуры:
id
id_lesson
id_student
 
где id_lesson - идентификатор лекции (семинара),
    id_student - идентификатор студент, который присутствовал на ней
 
То есть может быть так:
id id_lesson id_student
1  1  1
2  1  2
3  1  3
4  1  4
5  2  1
6  2  3
7  2  4
8  2  5
9  3  1
 
и т.д.
 
Как написать такой запрос, который вывел бы в табличку студентов и количество посещений?
id_student num_lessons
1   3
2   1
3   2
 
Заранее спасибо.

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 20:17 26-04-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare
select id_student, count(*) num_lessons
from ...
group by id_student
или
select id_student, count(id_lesson) num_lessons
from ...  
group by id_student
Разница в данном случае не принципиальна

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 21:29 26-04-2017 | Исправлено: Alexzzy, 23:08 26-04-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy
 
 
Спасибо!

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 22:44 26-04-2017
llleopevzner

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Разница в данном случае не принципиальна  

При условии отстуствия null в id_lesson

Всего записей: 32 | Зарегистр. 11-12-2005 | Отправлено: 10:41 27-04-2017
kerpal

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Подскажите, пожалуйста, как написать запрос, чтобы в таблице найти значения по нужной маске?
Чтобы было понятно, вот идеальный пример: http://moscow.shop.megafon.ru/connect/chnumber/masknum.html
У меня примерно такие же вводные. В столбце с исходными данными одинадцатизначные цифры.
Нужно отбирать определённые по заданной маске (как на примере выше).

Всего записей: 280 | Зарегистр. 24-05-2008 | Отправлено: 12:18 16-05-2017 | Исправлено: kerpal, 12:35 16-05-2017
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
like operator
 
Некоторые БД поддерживают и regexp-запросы

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 14:47 16-05-2017
kerpal

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не совсем понимаю как like может помочь найти в таблице значения типа 12345656567, 78901212123, 65435757572 и т.п., если хочется поиск по маске а-ля abcdefefefg.

Всего записей: 280 | Зарегистр. 24-05-2008 | Отправлено: 15:37 16-05-2017
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если надо именно по точной маске - то ищи в своём диалекте SQL поддержку регулярных выражений (либо можешь сам сделать простой обработчик маски на строчных функциях)

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 16:38 16-05-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kerpal
С такими вопросами первым делом надо указывать СУБД!

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 19:39 16-05-2017
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну мож у человека учебная задача и нужно строго на ANSI писать...

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 22:13 16-05-2017
llleopevzner

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kerpal
а в чем проблема?
взяли номер, выяснили в маске позицию буквы А, нашли в номере, что на месте буквы А стоит цифра 9 и зареплейсили все девятки на букву А. после этого работает like
на чистом ANSI думать надо, действительно стоит конкретную субд сказать.
На первый взгляд я бы сначала лайкал на только цифры, а отобраный результат пихал бы в специальную функцию, которая лайкала бы на буквы.

Всего записей: 32 | Зарегистр. 11-12-2005 | Отправлено: 09:22 17-05-2017
kerpal

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Oracle

Всего записей: 280 | Зарегистр. 24-05-2008 | Отправлено: 09:39 17-05-2017
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это упрощает дело

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 10:55 17-05-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru