PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Champion Супермодератор
Отправлено: 03 Июля, 2011 - 19:09:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Наткнулся на очень интересный для SQLщиков(и профи, и новичков) ресурс.
http://www[dot]sql-ex[dot]ru - вот такой.
Большая куча литературы с примерами, с разбором заковыристых запросов, всякие интересные замысловатые задачки по SQL и DML, по оптимизации, рейтинги, сертификаты. Вот.
 
 Top
OrmaJever
Отправлено: 03 Июля, 2011 - 19:38:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7506
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 298 раз(а)




Спасибо! Всегда хотел sql подтянуть Улыбка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
komprenda
Отправлено: 05 Июля, 2011 - 17:00:00
Post Id


Гость


Покинул форум
Сообщений всего: 106
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




не работает
 
 Top
Champion Супермодератор
Отправлено: 05 Июля, 2011 - 18:07:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Да, что-то второй вечер уже сам зайти не могу. Они вроде на др. хостинг переезжают.
(Добавление)
Ожили
 
 Top
LIME
Отправлено: 29 Сентября, 2011 - 22:06:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 9810
Дата рег-ции: Нояб. 2010  


Помог: 287 раз(а)




Champion вот тогда вопрос по http://www[dot]sql-ex[dot]ru/learn_exercises.php?LN=7
решил так
чтото както многовато мне кажется
можно лучше решить?
(Добавление)
а за ресурс спасибо!


Отредактировано модератором: Champion, 30 Сентября, 2011 - 21:35:00
Удалил вещи, не предназначенные ля публикации


-----
вау
я кажется понял жастЮзера!!!
 
 Top
Champion Супермодератор
Отправлено: 30 Сентября, 2011 - 21:38:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Самое очевидное и ничем не плохое решение.
Только не стоит публиковать решения на сторонних форумах и точно так же не стоит публиковать формулировки задач. Особенно, когда речь пойдет о рейтинговых задачах.
Если есть вопрос, по задаче, его лучше задать в поддержку.
К тому же, раз задача решена, то доступно ее обсуждение - вот там можно опубликовать свое решение и полюбоваться другими
LIME пишет:
а за ресурс спасибо!
Это не мне спасибо)
 
 Top
LIME
Отправлено: 30 Сентября, 2011 - 21:41:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 9810
Дата рег-ции: Нояб. 2010  


Помог: 287 раз(а)




Champion неужели так серьезно? ))
ок ...я понял ... спасибо


-----
вау
я кажется понял жастЮзера!!!
 
 Top
Champion Супермодератор
Отправлено: 30 Сентября, 2011 - 21:50:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




LIME пишет:
Champion неужели так серьезно? ))
Ну за публикации рейтинговых задач полагается бан. Причем такие публикации, что интересно, отлавливаются весьма неплохо вместе с авторами Улыбка
 
 Top
koras
Отправлено: 18 Декабря, 2011 - 11:57:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Не по теме сказано, но ресурс принадлежит моему очень хорошему другу. Сам ресур не приследует коммерческого интереса, все ради того чтобы принести пользу.
 
 Top
LIME
Отправлено: 19 Декабря, 2011 - 15:26:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 9810
Дата рег-ции: Нояб. 2010  


Помог: 287 раз(а)




koras попроси друга починить регистрацию пжлст))
уже месяц наверное жду подтверждения ((
(Добавление)
korasотбой Радость получилось востановление хотя подтверждения не было ))


-----
вау
я кажется понял жастЮзера!!!
 
 Top
EuGen Администратор
Отправлено: 09 Июня, 2012 - 11:34:23
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Дано: таблица со структурой id int(11), name varchar(255). Заполнена примерно таким образом:
CODE (htmlphp):
скопировать код в буфер обмена
  1. id      name
  2. 1       Первый
  3. 2       Второй
  4. 5       Третий
  5. 6       Четвертый
  6. 7       Пятый
  7. 8       Шестой
  8. 9       Седьмой
  9. 13      Восьмой
  10. 14      Девятый
  11. 15      Десятый

Задача - не используя специальных средств СУБД (только доступные SQL-операторы и функции) сделать присоединение (JOIN) таблицы саму на себя, с тем, чтобы присоединенные строки встали в обратном порядке. То есть результат должен содержать следующее:
CODE (htmlphp):
скопировать код в буфер обмена
  1. left_id         name    right_id        name
  2. 1       Первый          15      Десятый
  3. 2       Второй          14      Девятый
  4. 5       Третий          13      Восьмой
  5. 6       Четвертый       9       Седьмой
  6. 7       Пятый   8       Шестой
  7. 8       Шестой          7       Пятый
  8. 9       Седьмой         6       Четвертый
  9. 13      Восьмой         5       Третий
  10. 14      Девятый         2       Второй
  11. 15      Десятый         1       Первый


Решение, получившееся у меня (некрасивое)
Спойлер (Отобразить)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Июня, 2012 - 12:31:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11450
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 553 раз(а)




Вне конкурса, т.к. не удовлетворяю условию. Просто любопытны стали более штатные средства:
Спойлер (Отобразить)

Спойлер (Отобразить)


-----
Если вы не знаете, почему это работает, вероятно, оно и не работает на самом деле. (С.Макконнелл)...
 
 Top
Champion Супермодератор
Отправлено: 09 Июня, 2012 - 13:14:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Вот такой вариант номер один:
Спойлер (Отобразить)

group_concat / list / for xml path - есть практически везде, так что наверное им можно пользоваться. Количество юнионов зависит от количества строк, что не очень приятно. Хотя эту последовательность можно генерить. Вот такие минусы. Зато плюс: на моих данных (250 строк) Ваше решение выполняется 2.5с, а моё всего 0.167.

Вариант 2 - пронумеровать строки переменными и сджойнить (написал Мелкий).

Вариант 3 - пронумеровать подзапросом и также сджойнить. Сейчас напишу и померяю
(Добавление)
Спойлер (Отобразить)
А этот неожиданно выполнился за 0.016
(Добавление)
И за 5с на 2000 записей.
 
 Top
DeepVarvar Супермодератор
Отправлено: 09 Июня, 2012 - 13:40:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10421
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Еще вариант:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT l.name, r.name
  2.   FROM tbl l
  3.   LEFT JOIN tbl r ON r.id = ((SELECT COUNT(1) FROM tbl) + 1 - l.id)
 
 Top
Мелкий Супермодератор
Отправлено: 09 Июня, 2012 - 13:46:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 11450
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 553 раз(а)




DeepVarvar, правильно сджойнится только на монотонном изменении id, в задаче id идёт с пропусками.

Champion, хороший вариант.


-----
Если вы не знаете, почему это работает, вероятно, оно и не работает на самом деле. (С.Макконнелл)...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB