SQL. Присоединение результата из другой таблицы
По просьбе MeTaTRoN: "Не мог бы объснить как писать эти запросы с left join ?".Всем этим вещам учат в институте, но по факту люди учатся работать запросами сами, непосредственно на практике.
Про LEFT JOIN можно много прочитать на Википедии, или поискать в интернете, но достаточно просто пояснить логику.
Допустим у нас есть таблица блогов, и таблица страниц.
Задача: Мы зашли на страницу по ее id, необходимо получить имя блога для вывода в шаблон по blog_id.
Итак. Давайте размышлять по-этапно:
Выбираем все поля из таблицы с топиком.
SELECT * FROM topics WHERE id=4;
Мы имеем в `topics`.blog_id - значение, к какому блогу принадлежит данная тема. Но нам нужно получить название блога. Значит нам нужно: присоединить таблицу блогов, выбрать там запись которая соответствует нашим требованиям, присоединить нужные поля из таблицы блогов к результату. Делаем:
SELECT * FROM topics LEFT JOIN blogs WHERE topics.id=4;
SELECT topics.* FROM topics LEFT JOIN blogs ON blogs.id=topics.blog_id WHERE topics.id=4;
SELECT topics.*, blogs.name FROM topics LEFT JOIN blogs ON blogs.id=topics.blog_id WHERE topics.id=4;
Вот на этом этапе часто новички встречаются с небольшой сложностью. Что делать, если и в topics, и blogs, есть поле name? Все просто. Есть конструкция AS, которая позволяет переименовывать имена результирующих атрибутов:
SELECT topics.*, blogs.name as blog_name FROM topics LEFT JOIN blogs ON blogs.id=topics.blog_id WHERE topics.id=4;
Все! Теперь в результате запроса мы получим дополнительное поле blog_name, в котором будет храниться атрибут blogs.name, соответствующий topics.blog_id
Успехов в программировании.
Дата записи: 25.01.2010 15:56
Предыдущая тема: Автозапуск скриптов