Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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

> Original message text:
> 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 предметов.
> В итоге в этом запросе что-то попадает, что-то пропадает, часто вообще ничего не загружает ...
>
>
>
>
>


From: Стас - 31/07/2008 - 15:25:27
Subject:1 SELECT из 4 таблиц
-----------------
Должно по идее и так работать
"select `name`, `log`, `monstr`, `item` from users, log, monstr, items
where lat=$lat && lon=$lon && map=$map";

но если не сработает, попробуй этот запрос

"select `name`, `log`, `monstr`, `item` from users, log, monstr, items
where
users.lat = '$lat'
AND users.lon = '$lon'
AND log.lon = '$lon'
AND log.lat = '$lat'
AND monstr.lon = '$lon'
AND monstr.lat = '$lat'
AND item.lon = '$lon'
AND item.lat = '$lat'";

Если и второй запрос не сработал, допиши к второму к селекту имена таблиц так же, через точку.
P.S. а что за игра то хоть?
P.P.S. можешь еще заглянуть на sql.ru там пооперативней помощь будет :)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
33926



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |