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

Тема в разделе "Базы данных", создана пользователем Sergo_Sev, 1 окт 2011.

Модераторы: latteo
  1. Sergo_Sev

    Sergo_Sev Творец

    Регистр.:
    14 июн 2008
    Сообщения:
    571
    Симпатии:
    188
    Есть вот такой код
    PHP:
    $sql 'SELECT * FROM files';
    $res $db->query($sql);
    $users = array();
    while (
    $row $db->get_array($res)) {
        
    $users[] = $row;
    }

    echo = 
    $row['name'];
    echo = 
    $row['news_id'];
    И две таблицы БД
    *files
    id
    name
    news_id

    *news
    id
    title


    Нужно вместо "news_id" вывести название "title" из другой таблицы, которому соответствует news_id

    Вначале хотел сделать таким образом
    SELECT * FROM files, news

    но ничего нужного не вышло
     
  2. Soul :)

    Soul :) Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    86
    Симпатии:
    9
    PHP:
    SELECT FROM files
       INNER JOIN news ON files
    .news_id news.id
     
    Sergo_Sev нравится это.
  3. REALiSTiC

    REALiSTiC

    Регистр.:
    30 мар 2006
    Сообщения:
    354
    Симпатии:
    126
    Как вариант через запятую перечислить таблицы и через where склеить.
     
  4. fly21

    fly21 Создатель

    Регистр.:
    11 авг 2009
    Сообщения:
    19
    Симпатии:
    2
    Если не ошибаюсь, то в случае с
    выдаст только те строки из *files для которых есть запись в *news
    Соответственно, если у Вас есть строки в *files, для которых отсутствует запись в *news, то такие строки будут опущены.
    Если необходимо получить все строки из *files, не зависимо от того, есть для них запись в *news или нет, то лучше использовать следующее:
    Код:
    SELECT * FROM `files`
    LEFT JOIN `news` ON `files`.`news_id` = `news`.`id`
     
  5. ghisool

    ghisool Писатель

    Регистр.:
    31 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    Тут, если по простому, есть 2 варианта - правильный и не совсем правильный(вернее совсем не правильный,но тоже рабочий:()
    1. Через объединение таблиц, как написал fly21.
    2. Посылать к базе 2 запроса, а затем формировать массив из 2х результатов в один средствами пхп.
     
  6. Рачей

    Рачей

    Регистр.:
    10 фев 2009
    Сообщения:
    193
    Симпатии:
    6
    Никогда не делайте 2 запроса к базе, если можно все реализовать одним запросом. Даже если что кажется нельзя, все равно пробуйте делать один запрос. Со временем получится. Или спрашивайте, обязательно кто-то поможет..
     
  7. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Иногда делайте 2 запроса, вместо одного, т.к. 2 отдельных запроса в высоконагруженных проектах будут давать меньшую нагрузку на БД, чем один объединенный. Если не прав, то подправьте.