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

Тема в разделе "PHP", создана пользователем danneo, 23 янв 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    в общем скрипт такой делаю...Есть базы: фирма, страна, область и город. Данные из фирмы выводятся нормально.
    Но никак не могу понять, как сделать привязку данных из одной базы к другой, т.е. у меня выводит сейчас список фирм и у каждой фирмы выводит и страну и область и город, но выводит их не те которые должны быть, а просто по порядку и как только список заканчивается, все фирмы идут без города, страны, области. У первой фирмы выводит страну с 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']==&& $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); 
     
  2. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Тут все есть:
    http://www.sql.ru/docs/sql/u_sql/ch8.shtml

    ЗЫ А вообще, ты ошибся разделом.
     
  3. torquemada

    torquemada Создатель

    Регистр.:
    19 авг 2007
    Сообщения:
    17
    Симпатии:
    3
    Ошибка заключается в том, что в MySQL нет такого понятия как последовательность записей в таблице, а ты изначально полагался что во всех 4-х твоих запросах последовательность возвращаемых записей идентична.
     
  4. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Вообще-то на автоинкрементное поле смотреть не надо...есть такое понятие как сортировка и выборка по заданным параметрам.. кроме того вам надо организовывать связь многие -ко-многим...те создать еще одну таблицу связей с полями id автоинкрементное... id_фирма...id_страна...id_область..id_.город
    вот тогда-то и получится нормально выбирать и сортировать...
    да забыл сказать что таблиц должно быть не две ,а столько сколько параметров..те в данном случае _фирма..._страна..._область.._.город..._ФИО..._и таблица связей...
     
  5. asterpool

    asterpool Создатель

    Регистр.:
    24 июн 2008
    Сообщения:
    30
    Симпатии:
    1

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

    в id_parametr закодировать нужное поле, а в parametr_value вписывать нужное значение. тогда по выборке по id_firma вылезут сразу все присвоенные ей параметры)
     
Статус темы:
Закрыта.