Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подмена значений стобца в таблице MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dezmont
Отправлено: 16 Марта, 2012 - 14:34:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Таблица contragent:
id | tax
----------
1 | 1
2 | 0
3 | 0
4 | 1
5 | 0

id - INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tax - tinyint unsigned NOT NULL DEFAULT 0

Мне необходим запрос на выборку всех значений из таблицы contragent, но чтобы в конечной таблице значения tax были заменены, соответственно, 0 - Не работает, 1 - работает.

Интересует именно вопрос: можно ли реализовать это непосредственно В САМОМ запросе?

З.Ы. ENUM не нужно предлагать... Дополнительную таблицу делать ради двух строк тоже не очется.
 
 Top
Мелкий Супермодератор
Отправлено: 16 Марта, 2012 - 14:38:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)






-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 16 Марта, 2012 - 14:40:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id, IF(tax, 'Работает', 'Не работает') AS label FROM `contragent`

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dezmont
Отправлено: 16 Марта, 2012 - 14:47:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Мелкий,EuGen спасибо большое. В изучении SQL ещё не добрался до IF,Case .... )
 
 Top
LIME
Отправлено: 16 Марта, 2012 - 14:50:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




EuGen вы всегда радели за освобождение бд от лишней нагрузки и переноса логики в пхп
это не тот случай?
 
 Top
EuGen Администратор
Отправлено: 16 Марта, 2012 - 14:55:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




LIME
Именно тот.
Однако же - задача сформулирована:
Dezmont пишет:
Интересует именно вопрос: можно ли реализовать это непосредственно В САМОМ запросе?

и дано ее решение.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LIME
Отправлено: 16 Марта, 2012 - 15:02:16
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




так и думал
однако замечу для тс что лучше будет либо перенести замену строковыми значениями в пхп
либо сразу хранить строки в конечном виде в бд(имхо последнее лучше)
 
 Top
Dezmont
Отправлено: 16 Марта, 2012 - 15:12:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




LIME, просто в php это не удобно реализовывать, в моём случае. В запросе получается красивей и легче. =)
Наверное так и сделаю, поменяю все значения в БД лучше. Хотел уменьшить объём хранимой информации, но не думаю, что оно того стоит.)

А теперь немножко не в тему вопрос....
В общем изменил я запрос так, как посоветовал Евгений.
Может сможете объяснить мне, почему mysql_field_table() не возвращает имя таблицы для поля tax?
Так и задумано? IF в запросе удаляет какие-нибудь идентификаторы принадлежности поля к таблице?
 
 Top
LIME
Отправлено: 16 Марта, 2012 - 15:17:16
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Dezmont пишет:
Хотел уменьшить объём хранимой информации, н
экономия ничтожна а код проще получится и быстрее
и не стоит переживать по поводу того что вырастит трафик
всеравно пакеты не до конца заполняются
Dezmont пишет:
IF в запросе удаляет какие-нибудь идентификаторы принадлежности поля к таблице?
в запросе используется псевдоним label
именно он и приходит
нет поля tax
 
 Top
EuGen Администратор
Отправлено: 16 Марта, 2012 - 15:17:30
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




http://php.su/functions/?mysql_field_table

mysql_field_table ожидает вторым параметром int


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LIME
Отправлено: 16 Марта, 2012 - 15:20:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Dezmont пишет:
Хотел уменьшить объём хранимой информации,
в случае ENUM (неужели нельзя?оптимально) значения хранятся отдельно (один раз) а в базе только их идентификатор и следовательно потерь никаких
(Добавление)
EuGen неужели нет необходимого условия присутствия поля в результирующей таблице?
 
 Top
EuGen Администратор
Отправлено: 16 Марта, 2012 - 15:29:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




LIME
PHP:
скопировать код в буфер обмена
  1.  
  2. $rSelect=mysql_query('SELECT users.id, data.name AS some_data FROM users LEFT JOIN data ON users.id=data.user_id');
  3.  


- второй параметр может принимать только значение 0 или 1. И, соответственно, вернется "users" или "data"

Насчет присутствия поля в таблице - имеется ввиду сама таблица? Тогда http://php.su/functions/?mysql_list_fields Если же речь идет о запросе (где, вероятно, есть альясы), то вопрос о принадлежности поля к таблице некорректен.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dezmont
Отправлено: 16 Марта, 2012 - 15:33:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




EuGen, вы не поняли мой вопрос. Я знаю как работает функция, и она выполняет то, что должна. НО! Если я использую в SELECT вот такую конструкцию:
CODE (SQL):
скопировать код в буфер обмена
  1.  IF(tax, 'Работает', 'Не работает') AS tax

вместо

Я верно вызываю функцию, но она не возвращает имя таблицы для поля tax. То есть из-за IF слетает какой-то идентификатор принадлежности поля к таблице в ресурсе, который возвращает mysql_query()

Хотел узнать может кто сталкивался? Можно ли как-то решить?
 
 Top
EuGen Администратор
Отправлено: 16 Марта, 2012 - 15:44:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Dezmont
Понятно. Для функций - она не возвращает ничего. Что логично - что она должна была бы вернуть на NOW() или CONCAT(field1, field2) где field1 и field2 принадлежат разным таблицам?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB