Связать данные из двух баз

Статус
В этой теме нельзя размещать новые ответы.

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
в общем скрипт такой делаю...Есть базы: фирма, страна, область и город. Данные из фирмы выводятся нормально.
Но никак не могу понять, как сделать привязку данных из одной базы к другой, т.е. у меня выводит сейчас список фирм и у каждой фирмы выводит и страну и область и город, но выводит их не те которые должны быть, а просто по порядку и как только список заканчивается, все фирмы идут без города, страны, области. У первой фирмы выводит страну с id=1, у второй - с id=2 и т.д., а в базе фирмы пока стоит id=1. Такая же ерунда с городами и облостями. Получается, что выводит не те данные из таблиц к конкретной фирме.
Вот код, если что:
PHP:
# SQL 
$inq = $db->query("SELECT * FROM ".$basepref."_firma "); 
# > 0 
// выполняем запросы на извлечение страны, области, города из баз 
$inqoblast = $db->query("SELECT oblastid,oblastname FROM ".$basepref."_firma_oblast"); 
$inqcity = $db->query("SELECT cityid,cityname FROM ".$basepref."_firma_city"); 
$inqcountry = $db->query("SELECT * FROM ".$basepref."_firma_country"); 
# Вывод новостей 
while($firma = $db->fetchrow($inq)){ 

//заносим в массив первую запись из таблиц в виде переменной $resultcountry 
$resultcountry = $db->fetchrow($inqcountry); 
        
$resultcity = $db->fetchrow($inqcity); 
$resultoblast = $db->fetchrow($inqoblast); 

//заносим в переменные данные 

$cpu = ($siteglobal['seourl']==1 && $firma['cpu']) ? "&cpu=".$firma['cpu'] : ""; 
//Присвоить переменной $cpu следующее значение: если URL = 1 и есть значение cpu в таблице firma, то присвоить переменной $cpu значение cpu из таблицы firma, иначе ничего не присваивать 
$title = "<a href=\"index.php?dn=".WORKMOD."&amp;to=art&amp;id=".$firma['id']."".$cpu."\">".$api->siteuni($firma['title'])."</a>"; 
//В переменную $title занести ссылку с текстом из таблицы firma поля title  

$oblast = "<a href=\"index.php?dn=".WORKMOD."&amp;to=art&amp;id=".$resultoblast['oblastid']."".$cpu."\">".$api->siteuni($resultoblast['oblastname'])."</a>"; 

$country = $resultcountry['countryname']; 
//В переменную $country занести ссылку с текстом из таблицы firma поля title  



$city = "<a class=\"cat\" href=\"index.php?dn=".WORKMOD."&amp;to=city&id=".$resultcity['cityid']."".$citycpu."\">".$resultcity['cityname']."</a>"; 

//В переменную $country занести ссылку с текстом из таблицы firma поля title  
$logo = ($firma['logo']) ? "<div class=\"thumb\" style=\"margin:5px; float:".$firma['logo'].";\"><img src=\"".$firma['logo']."\" border=\"0\" alt=\"".$firma['logo']."\"></div>" : ""; 


$tm->parseprint(array('logo'=>$logo, 
                      'city'=>$city, 
                      'oblast'=>$oblast,                       
                      'countryid'=>$countryin['countryid'],                                             
                      'id'=>$firma['firmaid'], 
                      'country'=>$country,                       
                      'title'=>$title, 
                      'count'=>$count 
                      ),$firmacontainer);
 
Ошибка заключается в том, что в MySQL нет такого понятия как последовательность записей в таблице, а ты изначально полагался что во всех 4-х твоих запросах последовательность возвращаемых записей идентична.
 
Вообще-то на автоинкрементное поле смотреть не надо...есть такое понятие как сортировка и выборка по заданным параметрам.. кроме того вам надо организовывать связь многие -ко-многим...те создать еще одну таблицу связей с полями id автоинкрементное... id_фирма...id_страна...id_область..id_.город
вот тогда-то и получится нормально выбирать и сортировать...
да забыл сказать что таблиц должно быть не две ,а столько сколько параметров..те в данном случае _фирма..._страна..._область.._.город..._ФИО..._и таблица связей...
 
да забыл сказать что таблиц должно быть не две ,а столько сколько параметров..те в данном случае _фирма..._страна..._область.._.город..._ФИО..._и таблица связей...


если привязка только к фирме, то ничто не мешает делать и в две таблицы.
во второй таблице:
id, id_firma, id_parametr, parametr_value

в id_parametr закодировать нужное поле, а в parametr_value вписывать нужное значение. тогда по выборке по id_firma вылезут сразу все присвоенные ей параметры)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху