HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 27.06.2008, 19:27
ENFIX
Участник форума
Регистрация: 06.06.2006
Сообщений: 213
Провел на форуме:
1628290

Репутация: 474
Отправить сообщение для ENFIX с помощью ICQ
По умолчанию

Код:
select concat_ws('\n', st1, st2) as result from tst;
так нельзя?)
 

  #2  
Старый 27.06.2008, 20:05
Solker
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме:
389768

Репутация: 158
По умолчанию

Цитата:
Сообщение от ENFIX  
Код:
select concat_ws('\n', st1, st2) as result from tst;
так нельзя?)
Всеровно получается, c точки зрения SQL, в одной строчке по 2 буквы.
 

  #3  
Старый 27.06.2008, 21:06
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от ENFIX  
Код:
select concat_ws('\n', st1, st2) as result from tst;
так нельзя?)
Это даже костылями назвать сложно

Да... наверное на задачку забили. Я сам минут 20 фтыкал, когда мне ее задли... сначала хотел сказать "Низя!", но посидел подумал... и вышел на верное направление Не исключаю что способ решения не один.
Если уж совсем не в моготу будет - могу подсказку сказать... правда думаю это практически решение
 

  #4  
Старый 27.06.2008, 21:09
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

та уже нашли ответ
Цитата:
SELECT if( f1 = f2, t2.st1, t2.st2 ) as res
FROM (

SELECT rand( 120 ) AS f1
FROM tst
LIMIT 2
) AS tmp

JOIN (

SELECT rand( 120 ) AS f2

) AS tmp1,
tst as t2 ORDER BY res;
точно наши,
где они уж не наши не бывали...

Последний раз редактировалось Naydav; 27.06.2008 в 21:24..
 

  #5  
Старый 27.06.2008, 21:18
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от Naydav  
та уже нашли ответ
Да, молодца Можно канешн оттачивать само решение - но направление правильное найдено - использовать условия
 

  #6  
Старый 27.06.2008, 21:31
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Задача:
Цитата:
Схема БД состоит из четырех отношений:

Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)

Отношение Product представляет производителя (maker), номер модели (model) и тип (PC - ПК, Laptop - ПК-блокнот или Printer - принтер). Предполагается, что номера моделей уникальны для всех производителей и типов продуктов. В отношении PC для каждого номера модели, обозначающего ПК, указаны скорость -speed (процессора в мегагерцах), общий объем RAM (в мегабайтах), размер диска -hd (в гигабайтах), скорость считывающего устройства CD (например, 4х) и цена - price. Отношение Laptop аналогично отношению РС за исключением того, что вместо скорости CD содержится размер экрана -screen (в дюймах). В отношении Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный - Laser, струйный - Jet или матричный - Matrix) и цена
Вопрос:
Цитата:
Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd
Результат правильного выполнения упражнения:
Например
Цитата:
model speed hd
1232 500 10
1232 450 8
1232 450 10
1260 500 10
Задачи на подобии такой на
http://sql-ex.ru/index.php
Там просто орвет в текстареа пишешь и смотришь резалт
2 этапа : обучающий, сертификационный
вопросов 40 наверно

пс
Там косячит регистрация, но есть кнопка - вход без регистрации

Последний раз редактировалось Naydav; 27.06.2008 в 21:45..
 

  #7  
Старый 27.06.2008, 22:00
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Ничего нетривиального в данной задаче не вижу
Цитата:
Сообщение от Naydav  
Там косячит регистрация, но есть кнопка - вход без регистрации
Я сейчас занимаюсь расширением функциональности и поддержкой данного проекта Не мог бы ты отписать что там именно косячит? Либо в личку, либо через форму обратной связи.

P.S. Этапа там не два а три.

Последний раз редактировалось VDShark; 27.06.2008 в 22:13..
 

  #8  
Старый 27.06.2008, 22:23
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
Отправить сообщение для Red_Red1 с помощью ICQ
По умолчанию

Извините почти оффтоп...
Может и забили но не все... жаль что неуспел решить , а то что тема упала, так это потому что нечего было писать так как в наверное были в поисках решения.
VDShark, я так понимаю нашли решение не такое как у тебя, ты писал что решил без подзапросов?
Хотелось бы еще со столь же простым условием и столь же захватывающее по поиску решения
 

  #9  
Старый 27.06.2008, 22:57
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от Red_Red1  
VDShark, я так понимаю нашли решение не такое как у тебя, ты писал что решил без подзапросов?
Да... у меня там самосоединение было + условная конструкция =)
 

  #10  
Старый 27.06.2008, 23:14
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от Red_Red1  
Хотелось бы еще со столь же простым условием и столь же захватывающее по поиску решения
Ну... коль никто не пишет - предложу еще одну задачку. Не такая интересная как предыдущая - но здесь задачка немног другая - максимально упростить решение.
Только что придумал условия - но прием, применяемый в данной задаче, достаточно распространенный.


Вот дамп базы:
Код:
--
-- Структура таблицы `fruits`
--

CREATE TABLE IF NOT EXISTS `fruits` (
  `name` varchar(50) NOT NULL,
  PRIMARY KEY  (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Дамп данных таблицы `fruits`
--

INSERT INTO `fruits` (`name`) VALUES
('apple'),
('banana'),
('orange'),
('pear');
Задача следующая: получить все пары значений (т.е. в результирующей выборке будет 2 столбца), подпадающие под след. условия:
1) Одного и того же фрукта в обоих столбцах быть не должно
2) Кортежи, в которых ячейки поменяны местами считаются одинаковыми. Т.е. если у нас есть
------------------
| banana | apple |
------------------
то
------------------
| apple | banana |
------------------
уже быть не должно

Ждем максимально компактного решения
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ