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 546

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, 19:26     # 3
mahoune
Newbie
 
Аватар для mahoune
 
Регистрация: 04.03.2004
Сообщения: 42

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

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

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

PHP код:
//--Основная таблица
mysql> CREATE TABLE `tst`.`my_tbl1` (
    ->   `
id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    ->   `
my_val` VARCHAR(45) NOT NULL,
    ->   
PRIMARY KEY (`id`)
    -> )
    -> 
ENGINE = MyISAM;
Query OK, 0 rows affected (0.11 sec)

//--Закидываем данные
mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.17 sec)

mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.00 sec)

mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.00 sec)

mysql> insert into my_tbl1 (`my_val`) values ('0');
Query OK, 1 row affected (0.00 sec)

mysql> insert into my_tbl1 (`my_val`) values ('0');
Query OK, 1 row affected (0.00 sec)

mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.02 sec)

mysql> insert into my_tbl1 (`my_val`) values ('1');
Query OK, 1 row affected (0.00 sec)

//-- Такие вот у нас в ней данные
mysql> select * from my_tbl1;
+----+--------+
| 
id | my_val |
+----+--------+
|  
1 | 1      |
|  
2 | 1      |
|  
3 | 1      |
|  
4 | 0      |
|  
5 | 0      |
|  
6 | 1      |
|  
7 | 1      |
+----+--------+
7 rows in set (0.00 sec)

//-- Так работает CASE
mysql> select 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)

//-- А вот дополнителная таблица
mysql> CREATE TABLE `tst`.`ny_tbl2` (
    ->   `
fld_val` INTEGER NOT NULL,
    ->   `
val_name` VARCHAR(45) NOT NULL,
    ->   
PRIMARY KEY (`fld_val`)
    -> )
    -> 
ENGINE = MyISAM;
Query OK, 0 rows affected (0.16 sec)

//-- Заполняем её данные
mysql> insert into ny_tbl2 values ('1', 'Yes'),('0','No');
Query OK, 2 rows affected (0.11 sec)
Records: 2  Duplicates: 0  Warnings: 0

//-- Вот они
mysql> select * from ny_tbl2;
+---------+----------+
| 
fld_val | val_name |
+---------+----------+
|       
1 | Yes      |
|       
0 | No       |
+---------+----------+
2 rows in set (0.00 sec)

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

mysql> insert into my_tbl1 (`my_val`) values ('3');
Query OK, 1 row affected (0.01 sec)

//-- немного усовершенствуем
mysql> select t1.id, IFNULL(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 |
+----+------------+
|  
1 | Yes        |
|  
2 | Yes        |
|  
3 | Yes        |
|  
4 | No         |
|  
5 | No         |
|  
6 | Yes        |
|  
7 | Yes        |
|  
8 | Hz         |
+----+------------+
8 rows in set (0.13 sec) 
__________________
mahoune
mahoune вне форума  


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

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

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


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




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