Мне нужно получить всех!!! юзеров, к каждому из которых добавляеться дополнительное поле 1 или 0(или пусто), которое береться в зависимости от наличия записи в другой таблице
Naydav, используй в качестве последнего поля конструкцию if т.е. Select ...., IF(условие,1,0) Примерно так (правильность не гарантирую, писал прям сюда, не проверял т.к. нет данных но принцип такой) SELECT *, if(`u`.`id`=`ua`.`userid` AND `ua`.`someid`=38,1,0) FROM `user` as `u` LEFT JOIN `user_addithion` as `ua` ON `u`.`id`=`ua`.`userid`
MySQL ERROR : 1 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation 'like' ставил ставил, на mySQL 4-5 c разными кодировками, все равно не работает, хотя устаналивается нормально...
Дело в том, что ты пытаешся сравнить строки с разной коллацией... приводи все к одной и сравнивай (либо базу к cp1251, либо строку к латин_шведиш)
http://en.wikipedia.org/wiki/Full_text_search http://ru.wikipedia.org/wiki/Полнотекстовый_поиск А оттуда уже пляши
скрипт форума smf 2.0 работает на PostgreSQL /MySQL. Если сначала он будет работать на MySQL, то можно ли будет потом "преобразовать" данные из MySQL в PostgreSQL ?
Вроде можно. Скрипт называется neomy2pg. Вот здесь есть некоторая информация о нем: _http://web.opennet.ru/opennews/art.shtml?num=6917
Мне кажется, можно только как-то так: Code: SELECT * FROM table1, table2, table3, tableN WHERE something=code Тоесть осуществлять поиск по всем таблицам базы, задав условие, которое будет равняться этому самому коду.
PHP: <?php $source = "/home/shaggy/shaggy.sql"; $output = "/home/shaggy/pgtest.sql"; $enum = 'varchar(10)'; // convert enum to this if ( !file_exists($source) ) { die("File not found: $sourcen"); } $fd = fopen($source, "r"); $result = fread($fd, filesize($source)); fclose($fd); $result = mysql2postgre($result); $fd = fopen($output, "w"); if (fwrite($fd, $result)) { echo "OKn"; } else { echo "Failedn"; } fclose($fd); function mysql2postgre($source) { global $enum; $result = $source; $result = preg_replace('/Type=MyISAM/i', '', $result); // convert line comments $result = preg_replace("/#(.*)/", '--$1', $result); // and compress newlines $result = preg_replace("/n{2,}/", "nn", $result); // get rid of proprietary code $result = preg_replace("/DROP TABLE IF EXISTSW+.+/i", '', $result); // indices $result = preg_replace("/(.*)UNIQUE KEY.+((.+))/i", "$1UNIQUE ($2)", $result); // a little hack to save primary keys $result = preg_replace("/(.*)PRIMARY KEY.+((.+))/i", "$1PRIMARY ($2)", $result); $result = preg_replace("/,n.*KEYW.+((.+))/i", "n-- was KEY ($1)", $result); $result = preg_replace("/(.*)PRIMARY.+((.+))/i", "$1PRIMARY KEY (\2)", $result); $result = preg_replace("/(.*?)(w+).+auto_increment/i", '$1$2 SERIAL', $result); // Postgre doesn't support the binary modifier $result = preg_replace('/binary/i', '', $result); // type transformations $result = preg_replace('/enum(.+)/i', $enum, $result); $result = preg_replace('/tinyint(.+)/i', 'smallint', $result); $result = preg_replace('/smallint(.+)/i', 'smallint', $result); $result = preg_replace('/meduimint(.+)/i', 'int', $result); $result = preg_replace('/int(.+)/i', 'int', $result); // Most of my default dates are '0000-00-00' $result = preg_replace("/datetime(.*) default '.*'/i", 'datetime$1', $result); $result = preg_replace("/date(.*) default '.*'/i", 'date$1', $result); return $result; } ?>
На халявных хостингах даются халявные мускул сервера. Там лимит в 10 мб и в 1-100 подключений... =( Я как раз такой сервер и юзаю, но не с того же хостинга, а с другого (на asp net). И меня интересует: есть ли в нете просто mysql сервера без хостинга?
ИМХО из веб самый цивилный - это пыхмайадмин. Если не веб - у них есть свой инструмент для такого дела.... MySQL GUI Tools обзывается: http://dev.mysql.com/downloads/gui-tools/5.0.html
переустановка Mysql-server in Ubuntu Выручайте Ачатовцы!! при переустановки mysql-server-5.0 на убунте выдает ошибку : Удаляется пакет mysql-server-5.0... * Stopping MySQL database server mysqld Warning: World-writable config file '/etc/mysql/my.cnf' is ignore ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)d удаляю ВСЁ!!! через aptitude или через apt-get, потом удаляю все катологи и файлы связаные с мускулом .... при повторной установки сервера системе НЕ создает каталогов ни файлов а выдает туже ошибку ((( установил мускул на виртуалку скопировал файлы которые смог : и my.cnf и все что дало скопировать, а =mysqld.sock недает!! перкопал убунтовский форум ничего толкового неговорят(( Подскажите как подчистую удалить мускул ??? ...идут вторые сутки гемороя(((((
сделал потом установил : sudo apt-get install -f mysql-server-5.0 и все равно: Code: Распаковывается пакет mysql-server-5.0 (из файла .../mysql-server-5.0_5.0.51a-3ubuntu5.1_i386.deb)... Настраивается пакет mysql-server-5.0 (5.0.51a-3ubuntu5.1) ... * Stopping MySQL database server mysqld [ OK ] /var/lib/dpkg/info/mysql-server-5.0.postinst: line 143: /etc/mysql/conf.d/old_passwords.cnf: No such file or directory dpkg: не удалось обработать параметр mysql-server-5.0 (--configure): подпроцесс post-installation script возвратил код ошибки 1 При обработке следующих пакетов произошли ошибки: mysql-server-5.0 E: Sub-process /usr/bin/dpkg returned an error code (1) нашел файл /conf.d/old_passwords.cnf скопировал в папку , выполник повторный инсталл Code: не установлено до конца или удалено 1 пакетов. After this operation, 0B of additional disk space will be used. Настраивается пакет mysql-server-5.0 (5.0.51a-3ubuntu5.1) ... * Stopping MySQL database server mysqld [ OK ] 080622 4:44:39 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/user.frm' (errno: 13) 080622 4:44:39 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/user.frm' (errno: 13) ERROR: 1017 Can't find file: './mysql/user.frm' (errno: 13) 080622 4:44:39 [ERROR] Aborting 080622 4:44:39 [Note] /usr/sbin/mysqld: Shutdown complete Reloading AppArmor profiles : done. * /etc/init.d/mysql: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz * Starting MySQL database server mysqld [fail] invoke-rc.d: initscript mysql, action "start" failed. dpkg: не удалось обработать параметр mysql-server-5.0 (--configure): подпроцесс post-installation script возвратил код ошибки 1 При обработке следующих пакетов произошли ошибки: mysql-server-5.0 E: Sub-process /usr/bin/dpkg returned an error code (1 ) хотя этот mysql/user.frm на месте...
Склейка таблиц: Всем, Добрый вечер! Нужно получить результат на основе выбора из 3 таблиц Есть таблицы: course id title course_date id courseID date course_user id courseID userID Связи вполне очевидны, в course_user содержиться соответствия между курсами и пользователями, а в course_date между курсами, и датами их проведения Так вот нужно получить, список всех дат из таблицы course_date, у которых множество courseID береться из Code: SELECT id FROM course WHERE courseID IN ( SELECT `courseID` FROM cclass_user_course WHERE `userID` = 1 ) Т.е. нужно получить даты проведения курсов( из одной таблицы), список этих курсов берем на основе выборки (из таблицы course_user), + к выбранным курсам беруться еще ихни title(из таблицы course) Вообщем, что-то типа Code: SELECT date FROM course_date WHERE courseID IN ( SELECT id FROM course WHERE courseID IN ( SELECT courseID FROM user_course WHERE `userID` =1 ) ) Только к результату еще нужно добавить title курса, ну и желательно наверной join, а не подвыборки
ну что-то типа этого Code: select d.date, c.title from course_date d left join course c on d.courseID = c.id left join course_user u on c.id = u.courseID where userID = 1;
Вот так работает Code: SELECT d.date, c.title FROM cclass_course_date AS d LEFT JOIN cclass_course AS c ON d.courseID = c.id LEFT JOIN cclass_user_course AS u ON c.id = u.courseID WHERE u.userID =1 AND u.type =1 AND d.date > NOW() GROUP c.title Спасибо Но так мы получаем последнюю дату(для курса) в списке, а как можно получить первую(т.е. ближайшую)? Может можно "усовершенствовать" запрос?