|
|
|
| Вот сколько читал так и не понял как делать двойные запросы.... ну например есть две базы в одной храниться весь купленный товар в другой список покупателей... база товаров разбита по категориям (таблицы) а как сделать чтоб при просмотре пользователя и индификаторм ид (первичный ключ) можно было увидеть какой он товар купил в каждой строке есть столбец user_id ?
и как сделать это на основе одной базы и нескольких таблиц? | |
|
|
|
|
|
|
|
для: Ozxar
(09.09.2005 в 02:54)
| | Да в общем просто следует расширить имена и включить имена баз данных - вы бы не могли привести CREATE TABLE таблиц, которые участвуют в запросе и имена баз данных? | |
|
|
|
|
|
|
|
для: cheops
(09.09.2005 в 14:30)
| | к сожелению не могу..... так это просто пример из головы... просто хотелось узнать на примере... | |
|
|
|
|
|
|
|
для: Ozxar
(09.09.2005 в 22:26)
| | Внешне это выглядит примерно так
mysql> SELECT db1.tbl1.id, db1.tbl1.name, db2.tbl2.letter FROM db1.tbl1, db2.tbl2
-> WHERE db1.tbl1.id = db2.tbl2.id;
|
| |
|
|
|
|
|
|
|
для: cheops
(10.09.2005 в 00:39)
| | а вот например выбирая значения из базы portal_account из строки столбец с о значением machine получаем номер потом идем в таблицу Portal_mashine от туда берем строку со значением ид равное machine и выбираем значения slot1 slot2 slot 3 ... slot10 смотрим из них не равен 0 и после отсева не нужных значений выбераем их из базы portal_base индификаторы (которые были в слотах) вы бираем их и одинаковые столбцы складываем в месте получаем нвый массив данных...
вроде все если не понятно объясню =))) | |
|
|
|
|
|
|
|
для: Ozxar
(15.09.2005 в 01:38)
| | Не понятно :))) Вы бы не могли бы привести структуры таблиц и поподробнее объяснить, что должно быть в конце? | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 02:40)
| | ну напиример...... из столбца ship взять значения
CREATE TABLE 'games_account' (
'id' int(11) NOT NULL auto_increment,
'login' varchar(255) NOT NULL default '',
'password' varchar(255) NOT NULL default '',
'last_login' datetime NOT NULL default '0000-00-00 00:00:00',
'key' varchar(255) NOT NULL default '',
'name' varchar(255) NOT NULL default '',
'family' varchar(255) NOT NULL default '',
'sex' varchar(20) NOT NULL default '0',
'date' varchar(10) NOT NULL default '',
'date_reg' varchar(10) NOT NULL default '',
'email' varchar(255) NOT NULL default '',
'city' varchar(255) NOT NULL default '',
'country' varchar(255) NOT NULL default '',
'clan' int(3) NOT NULL default '0',
'status' varchar(255) NOT NULL default '',
'sector' int(11) NOT NULL default '0',
'planet' int(11) NOT NULL default '0',
'info' text NOT NULL,
'chat_ban' set('y','n') NOT NULL default '',
'forum_ban' set('y','n') NOT NULL default '',
'auto' int(11) NOT NULL default '0',
'ship' int(11) NOT NULL default '0',
'training' int(11) NOT NULL default '0',
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;
|
перейти в базу
CREATE TABLE 'games_mashine' (
'id' int(11) NOT NULL auto_increment,
'name' varchar(255) NOT NULL default '',
'armor' int(11) NOT NULL default '0',
'mass' int(11) NOT NULL default '0',
'battery' int(11) NOT NULL default '0',
'heat' int(11) NOT NULL default '0',
'heals' int(11) NOT NULL default '0',
'speed' int(11) NOT NULL default '0',
'sale' int(11) NOT NULL default '0',
'load' int(11) NOT NULL default '0',
'slot1' int(5) NOT NULL default '0',
'slot2' int(5) NOT NULL default '0',
'slot3' int(5) NOT NULL default '0',
'slot4' int(5) NOT NULL default '0',
'slot5' int(5) NOT NULL default '0',
'slot6' int(5) NOT NULL default '0',
'slot7' int(5) NOT NULL default '0',
'slot8' int(5) NOT NULL default '0',
'slot9' int(5) NOT NULL default '0',
'slot10' int(5) NOT NULL default '0',
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
|
выбрать все столбцы slot
CREATE TABLE 'games_module' (
'id' int(11) NOT NULL default '0',
'name' varchar(255) NOT NULL default '',
'mod' int(11) NOT NULL default '0',
'mod1' int(11) NOT NULL default '0',
'mod2' int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
и все индификаторы всех слотов из ид выбрать из этой базы и их значения всех мод и сложит их так же мод1 и мод2 | |
|
|
|
|
|
|
|
для: Ozxar
(15.09.2005 в 19:18)
| | >Ozxar:
>Мдя.. значит ты нам не конкурент... =))) Эт радует
100% не конкурент ;-) хотя я тоже думал над этим вариантом | |
|
|
|
|
|
|
|
для: napTu3aH
(15.09.2005 в 19:33)
| | всмысле я имел ввиду по жанру... Понимаете программистов много и уу них свой подход на каждый выход... есть лучший и худший, быстрый и долгий... А это главный фактор...
1 сотая секунда может ссыграть злую шутку... | |
|
|
|
|
|
|
|
для: Ozxar
(15.09.2005 в 19:18)
| | Вам нужно создать еще одну таблицу(если ее еще нет), которая будет связывать все эти таблицы вместе.
CREATE TABLE 'games_comunicator' (
'id' int(11) NOT NULL auto_increment PRYMARY_KEY,
'id_account' int(11) NOT NULL,
'games_mashine' int(11) NOT NULL,
'games_module' int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
А потом уже при помощи этой таблицы выбирать нужные вам значения | |
|
|
|
|
|
|
|
для: napTu3aH
(15.09.2005 в 19:41)
| | не пойдет =) вариант был отвергнут =)) причем сразу... | |
|
|
|
|
|
|
|
для: Ozxar
(15.09.2005 в 19:46)
| | >не пойдет =) вариант был отвергнут =)) причем сразу...
Очень интересно почему? Разве эту связь можно подделать на клиентской машине? | |
|
|
|
|
|
|
|
для: Ozxar
(15.09.2005 в 19:18)
| | Брр... всё равно не понятно, что значит "перейти в базу". Таблицы games_account, games_mashine и games_module находятся в разных базах данных или одной? | |
|
|
|
|
|
|
|
для: cheops
(15.09.2005 в 22:59)
| | да в одной... черт =) сложно все тут... =))
Ну попробую еще раз =))
games_account в столбце ыршз берм значение например 11111 с ним идем в games_mashine от туда выбираем все столбцы slot1...10 и уже с этими значениями идем в
games_module и делаем выборку по значениям (из стобцов слотов) и сумируем в этой таблице все значения одного столбца | |
|
|
|
|
|
|
|
для: Ozxar
(15.09.2005 в 23:24)
| | >"с ним идем в"
А каким образом? Сохраняем в отдельную переменную или как? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 01:11)
| | в сессию загоняяем основные параметры | |
|
|
|
|
|
|
|
для: Ozxar
(16.09.2005 в 02:53)
| | Вы в сессию будеет загонять все данные из разных таблиц, для какого-то конкретного игрока? | |
|
|
|
|
|
|
|
для: napTu3aH
(16.09.2005 в 09:37)
| | а счего вы взяли что это из игры??? =))) | |
|
|
|
|
|
|
|
для: Ozxar
(16.09.2005 в 17:51)
| | методом дедукции ;-) | |
|
|
|
|
|
|
|
для: napTu3aH
(16.09.2005 в 19:17)
| | Вообшето это база данных склада =))) | |
|
|
|
|
|
|
|
для: Ozxar
(16.09.2005 в 02:53)
| | Поле ship таблицы games_account как связано с таблицей games_mashine? Т.е. в games_mashine какое поле ему соответсвует? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 13:16)
| | ship есть номер id в games_mashine | |
|
|
|
|
|
|
|
для: Ozxar
(16.09.2005 в 17:39)
| | Если я правильно понял то в поле slot1-slot10 храняться идентификаторы игрового модуля.
SELECT
games_mashine.slot1 as gm_s1,
games_mashine.slot2 as gm_s2,
games_module.mod1 as gmod1,
games_module.mod2 as gmod2,
games_module.mod1+games_module.mod1 as gmod_sum
FROM
games_account,
games_mashine,
games_module
WHERE games_account.ship = games_mashine.id
AND games_mashine.slot1 = games_module.id
|
Фух ну и запросик :)
!!!!!test!!!! | |
|
|
|
|
|
|
|
для: napTu3aH
(16.09.2005 в 19:34)
| | хм.... значит альтернативных вариантов нема =( жаль... ну ладно | |
|
|
|
|
|
|
|
для: Ozxar
(17.09.2005 в 07:17)
| | А вы не могли бы подробнее описать это??? запрос?? | |
|
|
|
|
|
|
|
для: Hiper
(17.09.2005 в 16:48)
| |
SELECT
games_mashine.slot1 as gm_s1,
#из таблицы "games_mashine" берем столбец "slot1" и присваеваем ему имя "gm_s1" при формировании результата. Дальше тоже самое только другая таблица или столбец
games_mashine.slot2 as gm_s2,
games_module.mod1 as gmod1,
games_module.mod2 as gmod2,
games_module.mod1+games_module.mod2 as gmod_sum
#суммируем значение "mod1" и "mod2", присваеваем ему имя "gmod_sum"
FROM
#дальше перечисляем таблицы из которых производиться выборка
games_account,
games_mashine,
games_module
WHERE games_account.ship = games_mashine.id
#задаем условия формирования результата
AND games_mashine.slot1 = games_module.id
|
| |
|
|
|
|
|
|
|
для: napTu3aH
(17.09.2005 в 17:33)
| | хм... а вот как получить вывод результата в коде
P.S. Mysql незнаю вообше только начал изучать | |
|
|
|
|
|
|
|
для: Hiper
(17.09.2005 в 17:59)
| | Для начала нужно соединиться с БД, для этого вам потребуються имя хостера, где стоит Мускул
Имя пользователя, пароль, и название БД, если она существует.
$hostname="";
$username="";
$password="";
$dbname="";
|
Дальше устанавливаем соединение с БД
mysql_connect($hostname, $username, $password);
mysql_select_db("$dbname");
|
Потом формируем нужный вам запрос и отправляем его в БД
$sql="SELECT * FROM $table";
$result=mysql_query($sql);
|
Теперь в переменной $result у вас массив полученный из Базы, чтобы его вывести в браузер существует много способов, зависящих от конкретной ситуации. | |
|
|
|
|
|
|
|
для: napTu3aH
(17.09.2005 в 19:50)
| | Спасибо немного разобрался =))
да кстати ваш запрос выводит нолевое значение.... но это не важно | |
|
|
|