Здравствуйте!
Имеется две таблицы:
PVE и
Heroes.
В таблицу
PVE добавляются два игрока с айди героями, а в таблице
Heroes хранятся характеристики героев.
Цель:
Нужно вывести с таблицы
PVE по статусу "ожидание другого игрока" или "сражение началось" и характеристики двух игроков (их здоровье и прочее).
Результат:
Выводится допустим статус: Сражаются(
из таблицы PVE), игрок #1(id_heroes 1001) - HP 100, игрок #2(id_heroes 1005) - HP 97(
таблици Heroes).
Выводится через WHILE, т.к. сражений много.
Пример как объеденяю две табилцыс двумя игроками:
$db->Query("SELECT tb1.*, tb2.* FROM `PVE` as tb1
inner join `HEROES` as tb2
on tb1.heroes_id_one = tb2.heroes_id AND
tb1.heroes_id_one != tb1.heroes_id_two OR
tb1.heroes_id_two = tb2.heroes_id AND
tb1.heroes_id_two != tb1.heroes_id_one
WHERE tb1.status != 'end'
ORDER BY tb1.PVE_id DESC LIMIT 20");
Пример работает, но проблема что он выводит только одного игрока и не знает о втором игроке, а мне нужно чтобы из таблицы HEROES выводились два игрока.
Можно конечно сперва вывести данные из PVE и в цикле потом обращаться к БД и брать информацию.
например:
$db->Query("SELECT * FROM `PVE`
WHERE status != 'end' ORDER BY status DESC LIMIT 20");
while($data_pve = $db->FetchArray()){
$heroes_id_one = $data_pve["heroes_id_one "];
$heroes_id_two = $data_pve["heroes_id_two "];
$res_one = mysql("SELECT * FROM HEROES WHERE heroes_id = ' $heroes_id_one' LIMIT 1");
$res_two = mysql("SELECT * FROM HEROES WHERE heroes_id = ' $heroes_id_two' LIMIT 1");
... .... .. дальше понятно.
}
Этот пример работает, но хотелось бы найти лучшее решение. Спасибо.