Перейти к содержимому


- - - - -

MySQL — Вопросы и ответы


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 29

#1 Andrian

Andrian
  • ~<::Romeo::>~

  • Пользователь
  • 250 сообщений
  • Пол:Мужчина
  • Интересы:Я студент и этим все сказанно!!!

Отправлено 27.10.2007 - 17:30

Нужно выбрать из базы значения столбца name и отсортировать их по алфавиту.задача легко решается с помощью Order by однако если в столбце присутствую как английские так и русские названия то сначала выводятся английские по алфавиту а потом русские. А надо наоборот, то есть русские по алфавиту, а затем английские. Слышал что можно выбрать из базы только имена начинающиеся с русских или английских символов, не подскажите, как это сделать?

#2 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 27.10.2007 - 18:20

во-1 сортировку можно делать скриптом (глупый вариант)
во-2 можно написать процедуру, которая будет добавлять 0 (допустим) в начале каждой строки, начинающейся с русских символов и сортировать по ней
других способов не знаю/не вижу

ЗЫ: и вообще сортировка рус>анг - это ужасно

#3 Andrian

Andrian
  • ~<::Romeo::>~

  • Пользователь
  • 250 сообщений
  • Пол:Мужчина
  • Интересы:Я студент и этим все сказанно!!!

Отправлено 27.10.2007 - 18:41

Общей темы не нашел, а создавать для каждой будет накладно...
У меня пока 2 вопроса.
1 Где можно найти описание ошибок Mysql желательно на русском
2 Можно ли значение столбца расчитать на основание других? На пример :
есть 3 столбца a b с можно ли сделать так что
если b= 0 то с=0
иначе с=a/b

#4 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 27.10.2007 - 21:18

1 - а зачем? они все и так понятны более менее, возникают правда иногда не в тему, но это уже в рамблер/яндекс/гугл
2 - можно, искать здесь: http://dev.mysql.com...1/en/index.html

#5 Igorek

Igorek
  • Пользователь

  • Пользователь
  • 378 сообщений
  • Пол:Мужчина
  • Город:СССР
  • Интересы:Охота и Стендовая стрельба, Python w Django.

Отправлено 27.10.2007 - 21:55

1 - можно сменить язык сообщений об ошибках
2 -
Писалось на коленке, поэтому за работоспособность не ручаюсь.
DROP TRIGGER testref;
DELIMITER $$

CREATE TRIGGER testref BEFORE INSERT ON test
FOR EACH ROW BEGIN
IF NEW.b=0 THEN SET NEW.c=0; ELSE SET NEW.c=NEW.a/NEW.b; END IF;
INSERT INTO test VALUES (null,NEW.a,NEW.b,NEW.c);
END $$
DELIMITER;
Как-то так.
Да mysql >5.0

#6 Andrian

Andrian
  • ~<::Romeo::>~

  • Пользователь
  • 250 сообщений
  • Пол:Мужчина
  • Интересы:Я студент и этим все сказанно!!!

Отправлено 27.10.2007 - 22:21

1 а это как?
2 пойду пробовать, спасибо
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIGGER testref' at line 1
Версия MySQL-клиента: 5.0.48

#7 Igorek

Igorek
  • Пользователь

  • Пользователь
  • 378 сообщений
  • Пол:Мужчина
  • Город:СССР
  • Интересы:Охота и Стендовая стрельба, Python w Django.

Отправлено 28.10.2007 - 10:22

1. Перестать задавать вопросы и для начала просто прочитать документацию
http://xpoint.ru/for...ead/15818.xhtml
2. На версии 5.0.18 всё прекрасно встаёт, о ошибка в самой обработке. Ладно позже погоняю

#8 Andrian

Andrian
  • ~<::Romeo::>~

  • Пользователь
  • 250 сообщений
  • Пол:Мужчина
  • Интересы:Я студент и этим все сказанно!!!

Отправлено 06.11.2007 - 19:05

Что-то не понял к чему эта ссылка? :)

#9 Igorek

Igorek
  • Пользователь

  • Пользователь
  • 378 сообщений
  • Пол:Мужчина
  • Город:СССР
  • Интересы:Охота и Стендовая стрельба, Python w Django.

Отправлено 08.11.2007 - 16:39

Да всё к тому же к русскоязычным сообщениям об ошибке

#10 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 15.11.2007 - 13:47

это вообще частая ошибка :)

вопрос чисто теоретический - как заставить пхп почти полноценно понимать юникод в связке с мускулем?)
просто у меня тут вырисовался интересный факт

set character_set_client='utf8'
set character_set_results='utf8'
set collation_connection='utf8_unicode_ci'
set names 'utf8'


+ php: Header("Content-Type: text/html; charset=UTF-8")
+ файл.php в юникоде (кодировка в смысле)
все это выводит каракули если пользоваться блокнотами или моим любимым пхп эдитором.
фактически все ок только при работе в зенде (у меня неон стоит).
вот сижу и не понимаю, каким образом получается такая фигня.
варианты?

#11 Igorek

Igorek
  • Пользователь

  • Пользователь
  • 378 сообщений
  • Пол:Мужчина
  • Город:СССР
  • Интересы:Охота и Стендовая стрельба, Python w Django.

Отправлено 17.11.2007 - 13:16

А DB кто будет присваивать UTF-8, вообще я заметил, что при создании базы надо принудительно задавать кодировку UTF-8

#12 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 19.11.2007 - 02:15

Igorek, создана она в utf, естессно, просто написать об этом забыл. все равно каракули, главное - какого [censored] в зенде все нормально работает О_О

Сообщение отредактировал Gastone: 19.11.2007 - 08:25
Читать правила! Иначе бан.


#13 Thorgrim

Thorgrim
  • Новичок

  • Пользователь
  • 9 сообщений

Отправлено 22.11.2007 - 13:44

Andrian, select * from [table] order by (name regexp '^[a-zA-Z]') asc, name;

Первая часть запроса: 0 — русский, 1 — английский. Может понадобиться поставить локаль: set character set '<локаль>';.

#14 Гость_Golovolom301_*

Гость_Golovolom301_*
  • Гость

Отправлено 12.01.2008 - 14:07

Народ возможно ли с помощью базы подключённой к YnHub’у выыести вот такие значения на сайт:

Цитата

НИК: [C]Nick
ШАРА(ГБ): 1.75
ВЕРСИЯ DC++: 0.401
СЛОТЫ: 100

т.е. мониторинг хаба сколько пользователе и их инфу!

Сообщение отредактировал Golovolom301: 12.01.2008 - 14:08


#15 drnet

drnet
  • ♞♞♞♞♞♞♞♞♞

  • Динозавр Форума
  • 8 810 сообщений
  • Пол:Мужчина
  • Город:
  • Интересы:В детстве был конструктор Лего, увлечение осталось.<br />Создал свой Лего для взрослых :)

Отправлено 19.03.2008 - 15:50

Есть запрос в MySQL с UNION. Он обрабатывает связи многие - ко многим.
  SELECT b.UserID AS UserID,
					b.UnitID AS UnitID,
					CONVERT(c.Flags & 1,UNSIGNED) AS ReadAccess,					
					CONVERT(c.Flags & 256, UNSIGNED)AS DeleteAccess
			FROM   db_UserUnit  b
					JOIN db_AccessMask c
					  ON c.AccessMaskID = b.AccessMaskID
			 UNION ALL
			 SELECT b.UserID AS UserID,
					c.UnitID AS UnitID,
					CONVERT(d.Flags & 1, UNSIGNED) AS ReadAccess,			   
					CONVERT(d.Flags & 256, UNSIGNED) AS DeleteAccess
			 FROM   db_UserGroup b
					JOIN `mojoportal`.`vzfrm_ForumAccess` c
					  ON c.GroupID = b.GroupID
					JOIN db_AccessMask d
					  ON d.AccessMaskID = c.AccessMaskID
			 UNION ALL
			 SELECT a.UserID AS UserID,
					CONVERT(0, UNSIGNED) AS UnitID,
					CONVERT(0, UNSIGNED) AS ReadAccess,				 
					CONVERT(0, UNSIGNED) AS DeleteAccess					
			 FROM   db_User  a
Если в таблице во время запроса db_User 2 записи, а в db_Unit одна то он возвращает результат в виде.
UserID UnitID  ReadAccess DeleteAccess
1			 1			0				0
2			 1			1		  256
1			 0			0				0
2			 0			0				0
Суть в том, что нужно отсортировать результат запроса так, чтобы записи пользователей возвращались наоборот, то есть в виде
UserID UnitID  ReadAccess DeleteAccess
1			 0			0				0
2			 0			0				0
1			 1			0				0
2			 1			1			 256
Забавно то, что точно такой же запрос возвращает записи в MSSQL Server в нужном порядке.
Кто поможет, буду считать крутым специалистом по MySQL.

#16 drnet

drnet
  • ♞♞♞♞♞♞♞♞♞

  • Динозавр Форума
  • 8 810 сообщений
  • Пол:Мужчина
  • Город:
  • Интересы:В детстве был конструктор Лего, увлечение осталось.<br />Создал свой Лего для взрослых :)

Отправлено 21.03.2008 - 20:03

В который раз убедился - сам себе не поможешь - никто не поможет. :)
CREATE PROCEDURE mydb.Sorter (_start INT(2), _limit INT(2))
BEGIN
SET @_start = _start, @_limit = _limit;
PREPARE stmt FROM 'SELECT * FROM myview LIMIT ?, ?';
EXECUTE stmt USING @_start, @_limit;
DEALLOCATE PREPARE stmt;
END;


#17 CreshOverite

CreshOverite
  • Изучает местность

  • Пользователь
  • 55 сообщений
  • Пол:Мужчина
  • Город:Митино
  • Интересы:PHP програмист <br />админ Веб серверов под Unix/Windows

Отправлено 28.05.2008 - 19:59

------------ Помогите написать SQL запрос!!! ------------------

Сам запрос очень большой и собирает инфу с 7 таблиц, и все вроде ничего но вот восьмая таблица никуда не лезет
вобщем упрощу задачу и сведу её к 2м таблицам
1я obj поле одно Id int(11);
2я lok поля oid int(11) , uid(11);

Данные:
obj:                lok:
Id                   oid    uid
1                    3       1
2                    2       1
3                    1       1
4
5
6

поля Id и oid говорят об объекте, uid о пользователе
Нужны все Id которых нет в lok.

Мой код:
SELECT obj.Id, lok.uid, lok.oid from obj, lok WHERE lok.uid = 1 AND
obj.Id != lok.oid

но я явно протупил ))
Подскажите плиз.

-------------------------- Уже нашел решение --------------------------------------
SELECT Id FROM obj LEFT JOIN lok ON id=oid WHERE oid IS NULL;

Сообщение отредактировал CreshOverite: 28.05.2008 - 21:10


#18 Крус

Крус
  • Консультант

  • Пользователь
  • 569 сообщений
  • Город:Албанский Бубруйск
  • Интересы:мои интересы - жить, не проживать, а именно жить наполняя каждый день драйвом

Отправлено 06.08.2008 - 21:46

ничего не понимаю...установил апач+пхп...эта связка намана пашет...установил мускуль и терь не могу через пхп делать запросы...причём в консоли мускуля всё ок, базы и таблицы создаются на ура...
пишет #1045 - Access denied for user 'root'@'localhost' (using password: NO)
логин и пароль на бд ставил root и root
мож что то не то делаю...помогите плз

#19 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 06.08.2008 - 22:51

2CreshOverite,
м, вы так поставили задачу, что ваше решение ее не решает) ну вам виднее, в общем случае это такой код:

SELECT * FROM tbl1 WHERE NOT EXISTS (
	SELECT col1 FROM tbl2 WHERE tbl2.col1 = tbl1.col1
)
или так:
SELECT * FROM tbl1 WHERE col1 NOT IN (
	SELECT col1 FROM tbl2
)

2Крус,
ну почитайте вы, что вам пишут.

Цитата

using password: NO
Перевожу: пароль не использован. соответственно при коннекте не был передан пароль, естественно Access Denied
Подсказка: ищите mysql_connect() или mysql_pconnect()

Сообщение отредактировал snake: 06.08.2008 - 22:54


#20 Крус

Крус
  • Консультант

  • Пользователь
  • 569 сообщений
  • Город:Албанский Бубруйск
  • Интересы:мои интересы - жить, не проживать, а именно жить наполняя каждый день драйвом

Отправлено 07.08.2008 - 08:33

в phpmyadmin так пишет. попробовал создать быстрый скрипт для теста с выводом значений из таблицы и всё равно не работал.
а так проблему решил методом переустановки мускуля...прост в конфиге не задавал пасс

#21 Chep FOOSE

Chep FOOSE
  • Мыслитель

  • Пользователь
  • 1 569 сообщений
  • Пол:Мужчина
  • Город:Из Чертиков!
  • Интересы:Компьтеры Радиотехника Автомобили Аниме Музыка Игры и прочее

Отправлено 01.09.2009 - 20:48

Проблемка с ДЛЕ

CREATE TABLE dle_category (
  `id` smallint(5) NOT NULL auto_increment,
  `parentid` smallint(5) NOT NULL default '0',
  `posi` smallint(5) NOT NULL default '1',
  `name` varchar(50) NOT NULL default '',
  `alt_name` varchar(50) NOT NULL default '',
  `icon` varchar(200) NOT NULL default '',
  `skin` varchar(50) NOT NULL default '',
  `descr` varchar(200) NOT NULL default '',
  `keywords` text NOT NULL,
  `news_sort` varchar(10) NOT NULL default '',
  `news_msort` varchar(4) NOT NULL default '',
  `news_number` smallint(5) NOT NULL default '0',
  `short_tpl` varchar(40) NOT NULL default '',
  `full_tpl` varchar(40) NOT NULL default '',
  PRIMARY KEY  (`id`)
  ) TYPE=MyISAM /*!40101 DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci */

#22 Vipous

Vipous
  • Великий и Могучий

  • Power User
  • 1 899 сообщений
  • Пол:Мужчина
  • Город:Солнцево

Отправлено 01.09.2009 - 21:59

в чем проблема?

#23 Chep FOOSE

Chep FOOSE
  • Мыслитель

  • Пользователь
  • 1 569 сообщений
  • Пол:Мужчина
  • Город:Из Чертиков!
  • Интересы:Компьтеры Радиотехника Автомобили Аниме Музыка Игры и прочее

Отправлено 02.09.2009 - 02:57

Просмотр сообщенияVipous (1 Сентября 2009, 22:59) писал:

в чем проблема?

Сайт не ставиться ша перебил винду поставил сервер 2008 поставлю попробую мускул 7
Кому надо забирайте http://depositfiles....files/txp5lhjhm

Сообщение отредактировал Chep FOOSE: 02.09.2009 - 02:58


#24 M1CR0S0FT

M1CR0S0FT
  • Пользователь

  • Пользователь
  • 150 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Музыка (гитара и фортепиано), медицина, психология, люди.

Отправлено 02.11.2009 - 21:25

Надеюсь, элементарнейший (для разбирающихся в мускуле людей) вопрос  :) . Хочется кое что уточнить по поводу следующего вопроса:

Цитата

Q. Как изменить забытый MySQL административный пароль?
1. перезапустить mysqld с опцией --skip-grant-tables
2. mysqladmin -h хост -u пользователь password 'новый пароль'


Т.к в программировании (следовательно, и в MySQL) я полный чайник, сначала хочется убедиться, что я сделал все правильно - я создал ярлыки для файлов mysqld-nt и mysqladmin и каждому в свойствах, в строке объект, приписал необходимые опции. Mysqld-nt спокойно перезапустился, а при запуске ярлыка mysqladmin один раз пищит спикер, и ничего не происходит - залогиниться в ДБ по прежнему нельзя по причине неверного пароля, забытого мною столетия назад... В чём проблема?

Сообщение отредактировал M1CR0S0FT: 02.11.2009 - 21:26


#25 mmaavv

mmaavv
  • Пользователь

  • Динозавр Форума
  • 395 сообщений
  • Пол:Мужчина
  • Город:Новокосино

Отправлено 03.11.2009 - 00:47

когда-то я делал так :
d:\wamp\mysql\bin\mysqld-nt.exe --defaults-file="d:\wamp\mysql\my.ini" --init-file=C:\mysql-init.txt

C:\mysql-init.txt :
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

#26 M1CR0S0FT

M1CR0S0FT
  • Пользователь

  • Пользователь
  • 150 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Музыка (гитара и фортепиано), медицина, психология, люди.

Отправлено 03.11.2009 - 11:22

Цитата

когда-то я делал так :
d:\wamp\mysql\bin\mysqld-nt.exe --defaults-file="d:\wamp\mysql\my.ini" --init-file=C:\mysql-init.txt

C:\mysql-init.txt :
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

Чё то не особо спасло... По прежнему в дб аксесс денайд, перезагруз компа ничего не изменил

Сообщение отредактировал M1CR0S0FT: 03.11.2009 - 11:28


#27 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 09.03.2010 - 21:56

Нет ли у кого информации какие символы допустимы в именах пользователя и паролях MySQL?
Интересуют версии 5.0 или 5.1

#28 travanna

travanna
  • Пользователь

  • Пользователь
  • 136 сообщений

Отправлено 09.03.2010 - 22:32

Просмотр сообщенияpahan76 (9 Марта 2010, 21:56) писал:

Нет ли у кого информации какие символы допустимы в именах пользователя и паролях MySQL?
Интересуют версии 5.0 или 5.1

[font="Courier New"]
mysql> select table_name,column_name, character_set_name, collation_name, column_type  from information_schema.columns where column_name in ('User', 'Password');
+--------------+-------------+--------------------+----------------+-------------+
| table_name   | column_name | character_set_name | collation_name | column_type |
+--------------+-------------+--------------------+----------------+-------------+
| columns_priv | User		| utf8			   | utf8_bin	   | char(16)	| 
| db		   | User		| utf8			   | utf8_bin	   | char(16)	| 
| procs_priv   | User		| utf8			   | utf8_bin	   | char(16)	| 
| tables_priv  | User		| utf8			   | utf8_bin	   | char(16)	| 
| user		 | User		| utf8			   | utf8_bin	   | char(16)	| 
| user		 | Password	| latin1			 | latin1_bin	 | char(41)	| 
| user_info	| User		| utf8			   | utf8_bin	   | varchar(16) | 
+--------------+-------------+--------------------+----------------+-------------+
7 rows in set (0.05 sec)
[/font]

Как видно, пароли - в latin1

http://en.wikipedia....59-1#ISO-8859-1

#29 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 09.03.2010 - 23:31

А вот все ли 160 символов из Latin-1 допустимы или нет?

#30 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 20.03.2010 - 23:05

Глянул исходники. В паролях недопустимы все управляющие символы+обрезаются все пробелы справа. Если используется старый алгоритм (до MySQL 4), то также игнорируются все пробелы и знаки табуляции. Про какие-то недопустимые символы в именах пользователя пока ничего не нашел.




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей