Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Константы в виде строк.
 
 автор: Слух   (04.03.2010 в 18:11)   письмо автору
 
 

Сложно объяснить, проще нарисовать. Можно ли в запросе, не используя UNION вывести строковые константы в таком виде?

Такой запрос выведет в виде одной строки с перечислеными полями, а нужно в одну колонку.
SELECT dayname as weekday, 'Понедельник', 'Вторник', .... from table;


Возможно ли сделать не используя UNION?

select 'Понедельник' as weekday
union select 'Вторник'
union select 'Среда';


weekday
Понедельник
Вторник
Среда
Четверг
....

  Ответить  
 
 автор: Тень&   (04.03.2010 в 18:32)   письмо автору
 
   для: Слух   (04.03.2010 в 18:11)
 

Нет, нельзя. Собственно, зачем это нужно вообще?

  Ответить  
 
 автор: oliss   (05.03.2010 в 03:08)   письмо автору
 
   для: Слух   (04.03.2010 в 18:11)
 

>Понедельник', 'Вторник'
Кирилица в запросе полей SQL ???

  Ответить  
 
 автор: Trianon   (05.03.2010 в 03:55)   письмо автору
 
   для: Слух   (04.03.2010 в 18:11)
 

Вот чего я никогда, пожалуй, не пойму, так это ультимативных оговорок вроде "не используя UNION".

Как забить гвоздь, не применяя молотка?

Ужель не видно, что ответом будет (Почему не применяя?)
подразумевая (Возьми молоток и не пудри людям мозги!)

  Ответить  
 
 автор: Слух   (05.03.2010 в 10:51)   письмо автору
 
   для: Trianon   (05.03.2010 в 03:55)
 

Тоесть вы хотите сказать что в MySQL нет стандартных методов задать какойто массив определенных значений и потом их вывести строками?
Тоесть если у меня будет таких 20-50 значений которые я хочу вывести нужно сделать столько же юнионов? Хорошее решение, ничего не скажешь.

  Ответить  
 
 автор: Trianon   (05.03.2010 в 12:48)   письмо автору
 
   для: Слух   (05.03.2010 в 10:51)
 

Если у Вас будет 20-50 строк, которые Вы хотите вывести - значит они уже у Вас в таблице.
Если их у Вас нет - значит Вы их хотите ввести. Есть исключения, правда.
Стандартные методы есть в SQL.
Стандартным методом решения такой задачи (ввод нескольких строк) является цепочка UNION SELECT.
В MySQL вообще стандартных методов нет - все методы нативные.
Одним из нативных методов MySQL является запрос расширенных вставок
INSERT INTO tbl (fieldlist...) VALUES (valuelist...)...(valuelist...)
Но в операторе SELECT его не применить.

Следует отметить, что стандартный метод такой неортогональностью не обладает - его можно применить как в SELECT, так и в INSERT . Хотя пользоваться им при наличии нативного в INSERT - согласен - чистый мазохизм.

  Ответить  
 
 автор: Слух   (05.03.2010 в 12:57)   письмо автору
 
   для: Trianon   (05.03.2010 в 12:48)
 

Тогда спрошу еще такой момент.
Нельзя ли на какое то короткое время создать таблицу, даже не создать а просто добавить записи в таблицу не обьявляя ее?
insert into tmp_table (weekday) values( 'Понедельник', 'Вторник')
и потом их же выбрать?

З.Ы. Да это уже из ряда фантастики и применять вряд ли где-то прийдеться, уже просто интересно.

  Ответить  
 
 автор: Trianon   (05.03.2010 в 13:03)   письмо автору
 
   для: Слух   (05.03.2010 в 12:57)
 

конечно можно.
mysql_insert_id вернет автоинкрементный первичный ключ первой добавленной строки.
Количество Вам известно (хотя может быть получено mysql_affected_rows())
Блок ключей будет непрерывным. WHERE id BETWEEN ... AND ...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования