imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 01.10.2009, 18:28     # 1
kasha
Member
 
Аватар для kasha
 
Регистрация: 08.08.2005
Адрес: Прибалтика
Пол: Male
Сообщения: 217

kasha Известность не заставит себя ждать
MYSQL из запроса получаем 1, как преобразовать в string

люди подскажите пожалуйста , такой вопрос:
я делаю query к БД.

SELECT name, otvet FROM table1;

потом я это все запизиваю в массив и вывожу. Проблема в том, что в столбце otvet у меня содержатся два вида ответа: 1 или 0. При выводе я хочу видеть ДА или НЕТ, вместо цифр 0 и 1. Я в замншательстве, т.к. функции для замены числового значения на стринг прямо в запросе SELECT я не знаю, а как потом обработать спомощью пхп тоже ...
конечно, можно через if наверное как-то, но тут же массив и мне надо ввывести например 20 строчек, через do while.
kasha вне форума  
Старый 01.10.2009, 19:29     # 2
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 515

Borland - Гад и сволочь
не знаю, как в мускуле, а в M$ SQL примерно так:
Код:
SELECT name, CASE otvet when '1' then 'ДА' when '0' then 'НЕТ' ELSE 'ХЗ' END 
FROM table1;
P.S. Ага, в мускуле case с тем же синтаксисом должен работать...
http://www.mysql.ru/docs/man/Control_flow_functions.html
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий


Последний раз редактировалось Borland; 01.10.2009 в 19:36. Причина: P.S.
Borland вне форума  
Старый 15.11.2009, 18:26     # 3
mahoune
Newbie
 
Аватар для mahoune
 
Регистрация: 04.03.2004
Сообщения: 40

mahoune Путь к славе только начался
Exclamation

Борланд совершенно прав, синтаксис такой же.

Если вариантов ответов у вас больше то имеет смысл завести отдельную табличку. Вот пример:

PHP код:
//--Основная таблица
mysqlCREATE TABLE `tst`.`my_tbl1` (
    ->   `
idINTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    ->   `
my_valVARCHAR(45NOT NULL,
    ->   
PRIMARY KEY (`id`)
    -> )
    -> 
ENGINE MyISAM;
Query OK0 rows affected (0.11 sec)

//--Закидываем данные
mysqlinsert into my_tbl1 (`my_val`) values ('1');
Query OK1 row affected (0.17 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('1');
Query OK1 row affected (0.00 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('1');
Query OK1 row affected (0.00 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('0');
Query OK1 row affected (0.00 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('0');
Query OK1 row affected (0.00 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('1');
Query OK1 row affected (0.02 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('1');
Query OK1 row affected (0.00 sec)

//-- Такие вот у нас в ней данные
mysqlselect from my_tbl1;
+----+--------+
id my_val |
+----+--------+
|  
1      |
|  
1      |
|  
1      |
|  
0      |
|  
0      |
|  
1      |
|  
1      |
+----+--------+
7 rows in set (0.00 sec)

//-- Так работает CASE
mysqlselect case my_val when '1' then 'Yes' when '0' then 'No' else 'Hz' end as my_field from my_tbl1;
+----------+
my_field |
+----------+
Yes      |
Yes      |
Yes      |
No       |
No       |
Yes      |
Yes      |
+----------+
7 rows in set (0.00 sec)

//-- А вот дополнителная таблица
mysqlCREATE TABLE `tst`.`ny_tbl2` (
    ->   `
fld_valINTEGER NOT NULL,
    ->   `
val_nameVARCHAR(45NOT NULL,
    ->   
PRIMARY KEY (`fld_val`)
    -> )
    -> 
ENGINE MyISAM;
Query OK0 rows affected (0.16 sec)

//-- Заполняем её данные
mysqlinsert into ny_tbl2 values ('1''Yes'),('0','No');
Query OK2 rows affected (0.11 sec)
Records2  Duplicates0  Warnings0

//-- Вот они
mysqlselect from ny_tbl2;
+---------+----------+
fld_val val_name |
+---------+----------+
|       
Yes      |
|       
No       |
+---------+----------+
2 rows in set (0.00 sec)

//-- А вот таким нехитрым запросом можно эти таблицы объеденить
mysqlselect t1.idt2.val_name
    
-> from my_tbl1 t1
    
-> left join ny_tbl2 t2 on t2.fld_val t1.my_val
    
-> ;
+----+----------+
id val_name |
+----+----------+
|  
Yes      |
|  
Yes      |
|  
Yes      |
|  
No       |
|  
No       |
|  
Yes      |
|  
Yes      |
+----+----------+
7 rows in set (0.11 sec)

mysqlinsert into my_tbl1 (`my_val`) values ('3');
Query OK1 row affected (0.01 sec)

//-- немного усовершенствуем
mysqlselect t1.idIFNULL(t2.val_name,'Hz') as val_name_x
    
-> from my_tbl1 t1
    
-> left join ny_tbl2 t2 on t2.fld_val t1.my_val
    
-> ;
+----+------------+
id val_name_x |
+----+------------+
|  
Yes        |
|  
Yes        |
|  
Yes        |
|  
No         |
|  
No         |
|  
Yes        |
|  
Yes        |
|  
Hz         |
+----+------------+
8 rows in set (0.13 sec
__________________
mahoune
mahoune вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

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


Часовой пояс GMT +4, время: 20:42.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.