|
MySQL.RU - Webboard
Вернуться
1 SELECT из 4 таблиц (Giga) 30/07/2008 - 22:35:56
Re: 1 SELECT из 4 таблиц (Стас) 31/07/2008 - 15:25:27
Re: 1 SELECT из 4 таблиц (Prestige) 22/08/2008 - 03:18:25
From: Giga - 30/07/2008 - 22:35:56
Subject:1 SELECT из 4 таблиц
-----------------
Это для разработки браузерной онлайн игры
Пример 4 таблицы
Таблица 1 users - юзеры
...
name
lat
lon
map
...
Таблица 2 log - логи
...
log
lat
lon
map
...
Таблица 3 monstr - монстры
...
monstr
lat
lon
map
...
Таблица 4 items - предметы в локации
...
item
lat
lon
map
...
Во всех таблицах есть значение широта, долгота и карта. Соответственно игрок перейдя например в локацию широта=3, долгота=3, карта=1 должен загрузить в браузер какие игроки еще есть в этой локации и на этой карте, какие логи в ней (пришел ххх, ушел ххх, ударил ххх, убил ххх, погиб ххх), какие монстры в этой локации и какие предметы в ней.
До сих пор я обходился запросами отдельно по каждой таблице. Примерно такого вида ...
[code]
Function LoadLoc($lat,$lon,$map)
{
$LocContent='';
$QueryUsers = mysql_query("SELECT `name` FROM `users` WHERE lat=$lat && lon=$lon && map=$map");
while($RowUsers = mysql_fetch_array($QueryUsers))
{
$LocContent.="<a href='user.php?user=$RowUsers[0]'>$RowUsers[0]</a><br>";
}
$QueryLog = mysql_query("SELECT `log` FROM `log` WHERE lat=$lat && lon=$lon && map=$map");
while($RowLog = mysql_fetch_array($QueryLog))
{
$LocContent.="$RowLog[0]<br>";
}
$QueryMonstr = mysql_query("SELECT `monstr` FROM `monstr` WHERE lat=$lat && lon=$lon && map=$map");
while($RowMonstr = mysql_fetch_array($QueryMonstr))
{
$LocContent.="<a href='monstr.php?monstr=$RowMonstr[0]'>$RowMonstr[0]</a><br>";
}
$QueryItems = mysql_query("SELECT `items` FROM `items` WHERE lat=$lat && lon=$lon && map=$map");
while($RowItems = mysql_fetch_array($QueryItems))
{
$LocContent.="<a href='item.php?item=$RowItem[0]'>$RowItem[0]</a><br>";
}return $LocContent;
}
[/code]
Но на данный момент встал вопрос экономии ресурсов сервера и хотелось бы обьеденить все эти запросы в один.
Пытался сделать вида "SELECT users.name, log.log, monstr.monstr, items.item FROM users, log, monstr, items WHERE lat=$lat && lon=$lon && map=$map"
Но здесь встала еще одна проблема ... При загрузке содержимого локации в ней может быть 1 игрок, 5 строк лога, 0 монстров, 1 предмет или 1 игрок, 0 строк лога, 0 монстров, 0 предметов.
В итоге в этом запросе что-то попадает, что-то пропадает, часто вообще ничего не загружает ...
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
33926
|
|