Так может Code: $result = mysql_query("SELECT subcatid, title, description FROM baza_ads WHERE subcatid in (5,8)") or die(mysql_error()); А потом уже Code: while ($row = mysql_fetch_assoc($result)) { echo $row['subcatid'] . ': <br />'; echo 'title:'.$row['title'] . '<br />'; echo 'description:'.$row['description'] . '<br />'; }
Спасибо. работает. Я просто привел этот пример так как хотел понять как сделать в моей ситуации.. оказалось все на много сложней Прочитай пм
Хотел спросить еще одну вещь. Что такое Code: SELECT a.*, Что вот это ( а. ) с точкой обозначает ? выбрать откуда ?
a. - префикс, он любым может быть. Его используешь, если нужно в пределах запроса работать с уже полученными данными.
имя таблицы или ее алиас, если в запросе используется несколько таблиц, типа Code: SELECT a.id, b.id, c.summa FROM customers a INNER JOIN users b ON a.user_id = b.id INNER JOIN orders c ON a.user_id = c.user_id
как реализовать отношение 1..0 к 1..0 mssql ==========update============ вот что народ отвечает на винграде http://forum.vingrad.ru/forum/topic-310904.html
есть софт для сбора статы с игрового сервера Ил2 база mysql скрипты сайта статы пхп так вот там система такая записывается каждый вылет игрока, сколько сбил, сколько уничтожил и т.д. на главной сайта выводится например топ 10, 20 или 30 так же есть страницы со списком пилотов с сортировкой, и профиль каждого пилота пока статистика свежо установленная - все ок как только проходит 1-2 месяца, сайт статы начинает тормозить у многих игроков получается уже по 1000 вылетов, и каждый раз при открытие главной , страницы пилотов и т.д. для каждого пилота считается и суммируется все его вылеты, коэффициенты и т.д. наверно лучше бы это все было считать при вводе данных и иметь "статичную" таблицу общей статы, но как есть может есть какие то рекомендации по настройки mysql в таких ситуациях? и подходит ли mysql для таких систем, т.е. для статистики игрового сервера? или есть более подходящие бд?
Vaal mysql - вполне достаточно для этого 1) не насилуйте БД, достаточно обновлять статистику раз в N минут. 2) проверьте, стоят ли индексы на столбцах, по которым идет группировка и/или поиск 3) посмотрите как ведут себя запросы, с помощью запроса "EXPLAIN исходный запрос"
1) исходников софта нет т.е. изменить систему ввода данных не получится, так бы я её обновлял только после окончания миссии т.е. примерно 1 раз в час 2) индексы проверил, стоят 3) запрос списка пилотов, с EXPLAIN до этого не сталкивался Code: id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE s ALL NULL NULL NULL NULL 55259 Using where; Using temporary; Using filesort 1 SIMPLE p eq_ref PRIMARY PRIMARY 4 il2sc.s.pilotid 1 т.е. получается так что когда нужно вывести список больше чем из одного пилота, выбираются все пилоты и все вылеты(сейчас 55259), это набежало за 2 недели
зачем AP в запрoсе? к примеру: db_query('UPDATE table1 SET var1='.AP.$var1.AP.',var2='.AP.$var2.AP.' WHERE var3='.AP.$var3.AP.'LIMIT 1;');
как в linux"е подключить или включить консоль mysql в конце концов эта же функция есть, или я что то путаю?
запрос менять можно, есть способ его оптимизировать? ради интереса поставил Firebird конвертировал базу в него из Mysql сделал запрос выдающий результат аналогичный Mysql http://dumpz.org/22643/ получилось вот так Firebird - Execute time = 828ms Mysql - Запрос занял 1.2912 сек но как уже говорил это база пока 2х недельная, тормоза появляются через месяц или полтора
Vaal 0.8 мс - это нереально много. Создайте таблицу с теми же типами полей, которые выбираете этим запросом, и соответственно выбирайте данные из нее. Создайте скрипт, запускаемый по крону каждые 5 минут с таким запросом: Code: INSERT INTO new_table(поля, поля, поля...) SELECT p.id AS id, p.streak as streak, p.maxstreak as maxstreak, p.callsign AS name, sum(s.eAir) as ks, sum(s.fAir) as fair, sum(s.eSair+s.eTank+s.eWag+s.eArt+s.eCar+s.eAaa+s.eShip) as ground, count(*) as sorties, sum(s.eAir) / (sum(if(s.SortieEND='DIED' or s.SortieEND='BAIL' or s.SortieEND='MIA' or s.SortieEND='CAPTURED' or s.SortieEND='DIEDISCO',1,0))+1) as kd, sum(s.eSAir+s.eTank+s.eCar+s.eArt+s.eAaa+s.eWag+s.eShip) / (sum(if(s.SortieEND='DIED' or s.SortieEND='BAIL' or s.SortieEND='MIA' or s.SortieEND='CAPTURED' or s.SortieEND='DIEDISCO',1,0))+1) as gkd, sum(if(s.SortieEND='DIED' or s.SortieEND='MIA' or s.SortieEND='CAPTURED' or s.SortieEND='DIEDISCO',1,0))+0 as died, sum(s.eAir) / count(*) as ksort, round(sum((UNIX_TIMESTAMP(s.endtime)-UNIX_TIMESTAMP(s.starttime)))/3600,2)+0 as ftime, sum(s.eAir) / (round(sum((UNIX_TIMESTAMP(s.endtime)-UNIX_TIMESTAMP(s.starttime)))/3600,2)+1)+0 as khr, sum(s.eAir-s.eBom)*2 + sum(s.eBom)*4 + sum(s.eSAir)*0.2 + sum(s.eShip) + sum(s.eTank)*0.4 + sum(s.eAaa)*0.6 + sum(s.eWag)*0.2 + sum(s.eArt)*0.3 + sum(s.eCar)*0.15 - (round(sum((UNIX_TIMESTAMP(s.endtime)-UNIX_TIMESTAMP(s.starttime)))/3600,2)+0) - sum(if(s.SortieEND='DIED' or s.SortieEND='MIA',1,0))*2 - sum(if(s.SortieEND='CAPTURED',1,0))*1.5 - sum(if(s.SortieEND='CRASHED',1,0))*0.5 - sum(if(s.SortieEND='BAIL',1,0))+1 as score FROM pilots as p, sorties as s WHERE s.pilotid=p.id and s.SortieEND != 'KICK' GROUP BY p.id ORDER BY score DESC LIMIT 0, 50; Нагрузка упадет на несколько порядков, это если решать по простому. Если по сложому - сидеть и оптимизировать запрос (хотя чую, что это слабо возможно), но тут я не советчик
Вопрос по контакту,как записывать в бд id пользователей которые установили приложение? Я в этом новичок,поэтому жду помощи.
народ. 4асто попадаются базы, где вместо данных к примеру кредиток пишется NULL то есть они не сохраняются. как вклю4ить 4тоб они сохранялись?