Вывод двух таблиц из MySQL..

Тема в разделе "PHP", создана пользователем serjinio, 29 мар 2008.

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

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Вопрос для спецов .. в БД есть две таблицы
    $res1 = mysql_query("SELECT t,a,b,c FROM tab1",$db);
    $myrow = mysql_fetch_array($res);

    $res2 = mysql_query("SELECT title,e,k,s FROM tab2",$db);
    $myrow = mysql_fetch_array($res2);

    как их одновременно вывести ,например, в НТML таблицу типо...

    printf ("<table >..%s..%s.... </table>",$myrow["t"],

    $myrow["a"],$myrow["b"],$myrow["e"], $myrow["c"], $myrow["c"], $myrow["k"],$myrow["title"], $myrow["s"]);
    т.е. вперемешку из обеих таблиц...какой самый простой способ..Заранее спасибо...
     
  2. nami144

    nami144 Постоялец

    Регистр.:
    10 ноя 2007
    Сообщения:
    61
    Симпатии:
    19
    Ну, например, выводишь строчку из первой, потом строчку из второй, либо например, столбец из первой, потом столбец из второй, тут никакого простого способа быть не может, все равны :)
     
  3. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Можно вернуть значения из базы в два массива, потом объеденить и перемешать. Либо сразу писать в один массив. Затем foreach'ем вывести.
     
  4. Black#FFFFFF

    Black#FFFFFF

    Регистр.:
    19 июл 2007
    Сообщения:
    174
    Симпатии:
    107
    Какой вопрос такие и советы.
    Автор - как связаны между собой эти две таблицы? (по каким критериям идет сопоставление строк в таблицах?)
    А сформировать один массив для вывода в таблице тебе поможет синтаксис запросов к майскьюэль - INNER JOIN (идем в гугл вводим - MYSQL JOIN синтаксис - читаем полученные статьи:(
    пример.
    таблица 1 `table1` (поля:(
    id text id_table2
    таблица 2 `table2` (поля:(
    id text id_table1
    Нам нужно сформировать массив значений из обоих таблиц:
    запрос:
    PHP:
    $q 'SELECT `table1`.`id` AS `tid1`,`table2`.`id` AS `tid2`,`table1`.`text` AS `ttext1`,`table2`.`text` AS `ttext2` FROM `table1` INNER JOIN `table2` ON `table1`.`id` = `table2`.`id_table1`';
    $r mysql_query($q);
    if(
    $r&&mysql_numrows($r)>0){
     
    $a = array();
     echo(
    '<table>');
     while(
    $a mysql_fetch_row($r)){
            echo(
    '<tr>
                     <td>'
    .$a[0].'</td>
                     <td>'
    .$a[1].'</td>
                     <td>'
    .$a[2].'</td>
                     <td>'
    .$a[3].'</td>
            </tr>'

     }
     echo(
    '</table>');
     unset(
    $r,$a,$q);
    }
    это простейший пример - контролем выводимых данных в таблицу и целостностью хтмл думаю сам озаботишься. Но, вот только, и об этом не забудь.
     
  5. masto

    masto Прохожие

    простейший способ - это запрос вида "SELECT * FROM table1, table2" и его производные, без всяких JOIN.
     
  6. streloklab

    streloklab Создатель

    Регистр.:
    16 фев 2007
    Сообщения:
    47
    Симпатии:
    33
    Из того, что есть - JOIN имхо самый нормальный вариант...
    Насколько мне помнится в случае совпадения имен столбцов - пошлют далеко и надолго. Да и смысл? Проще от этого не станет.
     
  7. masto

    masto Прохожие

    не пошлют - в выборке будет присутствовать последний элемент.
    к тому же, никто не запрещает нормально проектировать БД и использовать синонимы.

    к стати, не совсем понятно чем в таком случае поможет JOIN.

    Смысл - не усложнять жизнь там где этого не надо.

    кому как.
     
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Объясните на пальцах, что такое ,и где применять LEFT JOIN и RIGHT JOIN
     
  9. masto

    masto Прохожие

    сколько не объясняй, пока не попробуешь сам - ничего не поймёшь.

    для изучения
     
  10. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    $res1 = mysql_query("SELECT t1.t,t1.a,t1.b,t1.c,t2.title,t2.e,t2.k,t2.s FROM tab1 t1, tab2 t2",$db);
    $myrow = mysql_fetch_array($res);
     
Статус темы:
Закрыта.