Code: UPDATE xxx, yyy SET yyy.count=(yyy.count-1) WHERE yyy.name=xxx.name AND xxx.id=5; DELETE FROM xxx WHERE id=5;
FireFenix, спс всё пашет. В продолжение темы: Нужно извлечь записи из таблицы xxx, при этом если в таблице yyy есть запись у которой поле xxx.`id`=`yyy`.`cur_id` то эти данные также должны появится в результате, а если их нету то запрос все равно будет выполнен. Я пытался сделать что-то вроде, но не получилось: Code: SELECT * FROM `xxx` IF EXISTS(SELECT * FROM `yyy` WHERE `xxx`.`id`=`yyy`.`my_id`);
Как всегда всё запутанно и сложно На этот случай есть LEFT JOIN Code: SELECT * FROM xxx LEFT JOIN yyy ON yyy.my_id=xxx.id Тогда ты получишь таблицу - состоящую из столбцов 2х таблиц Для наглядности и понимания советую посмотреть - http://www.codinghorror.com/blog/archives/000976.html
Есть таблица с колонкой date (тип varchar), в ней содержится timestamp, как вывести например записи с датой 2009-01-04? Спасибо.
Code: SELECT FROM_UNIXTIME(data_field); Code: mysql> SELECT FROM_UNIXTIME(1196440219); -> '2007-11-30 10:30:19' mysql> SELECT FROM_UNIXTIME(1196440219) + 0; -> 20071130103019.000000 mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x'); -> '2007 30th November 10:30:59 2007' Code: SELECT * FROM table WHERE FROM_UNIXTIME(data_field) = '2009-01-04';
Code: $query = mysql_query("SELECT * FROM news ORDER BY id DESC"); ASC - обычный порядок DESC - обратный порядок
Code: INSERT INTO yyy (name, id_xxx) SELECT "Я название" as "name", id FROM xxx; Code: SELECT * FROM xxx; ... Получаем нужные данные... INSERT INTO yyy SET столбец="полученные данные"; Вообще нужно уточнить задачу. Там есть много способов.
Даже не знаю, что там может быть особенного. Нужно для каждой записи из таблицы xxx создать запись в таблице yyy, при это надо заменить часть дефолтного текста одним полем из xxx. Мой набросок: Code: SELECT `name` FROM `xxx`; INSERT INTO yyy VALUES(NULL, ( REPLACE(somedata, '%username%', `xxx`.`name`) ) );
INSERT INTO yyy (name, id_xxx) SELECT "Я название" as "name", id FROM xxx; вот используй в SELECT указываешь поля которые будут выбираться из ххх и измённое поле как "поле as имя_поля"
Немного не понял некоторых вещей: 0. Это все необходимо сделать на уровне MySQL? Если же в PHP, то могу подсказать. 1. Для каждой записи в xxx надо сделать запись в yyy, но что и чем надо заменить?
0. Да, и что-то я сильно туплю с этим. 1. Замена неозятельна. Чтобы было понятней скажу что пишу систему массовой рассылки ЛС, в ней нужно для каждого пользователя создать запись в таблице `pm` с заданым текстом и при внесении это в бд дать записи id юзера. Попробую решить задачу проверенным способом — перепотрошить какой-то готовый двиг и посмотреть как сделано там.
есть таблица t1 на сервере S1 и точна такая же таблица t2 у меня на локалхосте S2 мне надо периодический переносить новые записи которые появляются на в таблице t1 к себе на локалхост в таблицу t2, т.е организовать синхронизация , таблица на локалхосте t2 сам не меняется только при синхронизации добавляються новые записи из t1. А теперь внимание вопрос))) как мне это грамотно организовать, что бы быстро все делалось. как ни будь я сам могу сделать, но не нужно грамотно организовать это
Смотри репликацию баз данных для мускуля можно почитать здесь http://www.webnext.ru/blog/2007/08/21/replication-mysql-master-slave.html
Если есть непосредственный коннект к серверам баз данных - организуется репликация (мастер-слейв) если нет - то через, например, пхп-скрипт, который запускается по времени или вручную
Я привык к тому, что доступа к удаленному MySQL нету, следовательно либо использовать тулзы для PHP tunneling, либо делается скрипт синхронизации. Суть такова - серверный скрипт при коннекте проверяет подлинность клиента и в случае подтверждения обрабатывает параметры запроса, проверяет изменившиеся данные, генерирует выдачу и возвращает её. Проверка идет таким образом: вначале на S1 пропускается SELECT `какой-то-id` FROM `t1`; и если mysql_num_rows соответствует присланному количеству строк, то возвращаем ответ, что различий нет. Далее mysql_free_result (можно её и не вызывать, если записей немного) и читаем из запроса список уникальных ключей (например, если есть ID с auto_increment, то их список лучше всего), а затем делаем выборку всех полей в том порядке, в котором они идут в таблице: Ну и потом, соответственно, выдача этого результата в ответ. Клиентская часть должна через cURL (либо другим способом) забирать результат и, если он не пустой (т.е. изменений нет), выполнять его. То есть при запуске скрипта, он делает выборку уникальных полей и в запрос пишет количество записей в таблице t2 и список уникальных полей, а после забирает то, что возвращает сервер, и выполняет запрос. Еще желательно разбить запрос, например, explode (";\r\n",$response); и выполнять по отдельности, чтобы, в случае необходимости, знать, какая строка ошибку генерирует. Вот и всё!!!!!!!
Вопрос: Почему при выполнении команды show status значения переменных opened_tables и open_tables после совершения запросов через phpmyadmin остаётся неизменным?А также почему Com_show_status содержит 1 после туевой кучи выполнения оной?!
Есть две директивы: Threads_connected и Threads_running.Можно ли по ним определить количество юзеров,подконнектившихся к базе ?