IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   MYSQL из запроса получаем 1, как преобразовать в string (http://www.imho.ws/showthread.php?t=141419)

kasha 01.10.2009 18:28

MYSQL из запроса получаем 1, как преобразовать в string
 
люди подскажите пожалуйста , такой вопрос:
я делаю query к БД.

SELECT name, otvet FROM table1;

потом я это все запизиваю в массив и вывожу. Проблема в том, что в столбце otvet у меня содержатся два вида ответа: 1 или 0. При выводе я хочу видеть ДА или НЕТ, вместо цифр 0 и 1. Я в замншательстве, т.к. функции для замены числового значения на стринг прямо в запросе SELECT я не знаю, а как потом обработать спомощью пхп тоже :(...
конечно, можно через if наверное как-то, но тут же массив и мне надо ввывести например 20 строчек, через do while.:idontnow:

Borland 01.10.2009 19:29

не знаю, как в мускуле, а в 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

mahoune 15.11.2009 18:26

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

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

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



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

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