Ага теперь вот такой вопрос: есть табличка: Code: CREATE TABLE `base` ( `id` int(10) unsigned NOT NULL auto_increment, `channel` char(255) NOT NULL, `country` char(255) NOT NULL, `rating` int(10) NOT NULL, `views` int(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; (1, 'Детский мир', '1', '0', '154' '1'), (1, 'Детский мир2', '3', '0', '154' '6'), (1, 'Детский мир3', '1', '0', '154' '12'), (1, 'Детский мир4', '2', '0', '154' '77'), (1, 'Детский мир5', '2', '0', '154' '1'); и Code: CREATE TABLE `country` ( `id` int(10) unsigned NOT NULL auto_increment, `title_rus` char(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; (1, 'Албания'), (2, 'Эстония'), (3, 'Япония'); Задача та же, из базы base выбрать 20 строчек с наибольшим рейтингом(rating) и полученное отсортировать по стане(title_rus) Помогите плиз
Есть таблица blabla с полями id,title запрос: select * from blabla Покажет их все. Мне же нужно вывести их все начиная с определенного id, чтобы нужный id выводился первым. Чтото вроде на выходе должно получится. (id = 4) 4 - Четвертая 1 - Первая 2 - Вторая 3 - Третья 5 - Пятая
Короче ладно. 1 запросом не придумать чета. Сделал так: 1 запросом вывожу по текущему id, воторым вывожу все что не равно этому id
PHP: $del= mysql_query("DELETE FROM `ban` WHERE `cnt` > `maxcount`") or die("Invalid query: " . mysql_error()) ; `cnt` and `maxcount`имена столбцов в базе которые содержат значения дело в том что он удаляет как то совершенно рандомно и понятно только ему как он удаляет записи, причем условию они могут как соответствовать так и не соответствовать или же SELECT id FROM bann WHERE `cnt` >= `maxcount` тоже возвращает рандомные айдишники =\
Даны две таблицы: tbl1 и tbl2. tbl1: содержит id, name tbl2: содержит id (которое связано с id предыдущей таблицы), work Как выполнить select всех записей, что бы каждая возвращённая строка содержала id, name, work и причём без нарушения связи, т.е. work соответствовал id. Пробовал в where ставить условие tbl1.id = tbl2.id, но по-моему, что то не так.. И + надо отсортировать ответ по name, к примеру.
привет! наверняка многие играли в покер вконтакте, там каждый день дается по рандомной сумме голосов. я хочу для своей игры сделать тоже самое, т.е. создать bool колонку "получен ли дневной бонус". в 12 часов ночи он ставится на false, а как только игрок получает его, становится true. так вот вопрос: можно это сделать как-то настройками mysql, или каждый день надо запускать пхп-скрипт, который все бы отмечал на false?
Architek86 Code: SELECT t1.id, t1.name, t2.work FROM tbl1 t1 LEFT JOIN tbl2 t2 USING (id) ORDER BY t1.name
Помогите пожалуйста, есть таблица вида date|name Колонка date содержит даты вида "2009-08-11 17:59:47", Как построить запрос, чтобы выводить результаты допустим за последние 6 часов.
Есть такой вопрос, имееться логин и пароль к бд, известен хост (ип-адрес), в бд я создаю пользователя (админа) со всеми правами: Code: GRANT ALL PRIVILEGES ON *.* TO USER@"%" IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; Пробую подключиться при помощи Navicat с другого компьютера, не работает. В чем может быть дело?
CREATE TABLE `ocenki` ( `num` INT NOT NULL AUTO_INCREMENT , `art` INT NOT NULL , `user` VARCHAR NOT NULL , `oc` SMALLINT NOT NULL , PRIMARY KEY ( `num` ) , INDEX ( `art` ) ) Ответ MySQL: #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 'NOT NULL, `oc` SMALLINT NOT NULL, PRIMARY KEY (`num`), INDEX (`art`))' at line 1 Что не так?
в этой строке: `user` VARCHAR NOT NULL , нужно указать длину поля, т.е. например так: `user` VARCHAR(20) NOT NULL , т.к. int и smallint имеют дефолтную длину, если такова не указана вручную, в отличие от VARCHAR
Полно вариантов, особено в никсах, но мне по душе скриптом такие вещи делать - без предварительного дампа, без зависимости от системы и бла-бла-бла PHP: <pre> <?php $dbname = 'instant'; # Имя БД $prefix = 'vobla_'; # Желаемый префикс $link = mysql_connect("localhost", "root", "root"); # Хост, юзер, пароль $query = "SHOW TABLES FROM " . $dbname; mysql_select_db($dbname); $result = mysql_query($query,$link); while ($table = mysql_fetch_array($result)) { $new = mysql_query ("ALTER TABLE `" . $table[0]. "` RENAME `" . $prefix . $table['0'] . "`", $link); print $table[0] . " ---> " . $prefix . $table['0'] . "\n"; } mysql_close($link); print "Замена произведена \n"; ?> </pre> Скуль запросом чтобы такое сделать (одним) - хз
Или еще один способ, чисто через phpmyadmin, аналогов не видел: 1. phpmyadmin->выбираем БД->SQL 2. Выполняем такой запрос: SELECT CONCAT(CONCAT('ALTER TABLE ', table_name),CONCAT(' RENAME ', CONCAT('pref_', table_name, ';'))) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='instant' LIMIT 0 , 100; где "pref_" - нужный префикс, в LIMIT указываем кол-во таблиц для изменения, "instant" - имя БД, в которой мы хотим добавить префикс к таблицам. В результате получим текст sql-запроса, который останется только скопировать и выполнить: т.е. полученный текст копируем, опять лезем в SQL, вставляем, выполняем, всё. PS: Можно вывести в файл и потом копировать оттуда
какой самый быстрый способ выбора последних n строк с таблице , в том же порядке в котором идут, длю удобства есть id (auto inc)