2013-04-25 2 views
0

Я создаю простой блог с категориями в php.Могу ли я сделать это с помощью 1 запроса?

Я хочу, чтобы myblog.com/category.php?id=3 показать мне это:

TITLE of the category 3 

// other stuff 

ALL POSTS of the category 3 

Таким образом, на самом деле я делаю 2 запросов (1 для получения титула и 1 для получения сообщения).

Есть ли способ сделать это с помощью 1 запроса?

+1

Ну, вы могли бы сделать что-то вроде: SELECT, почт, название от [ваш стол] WHERE ID = @ID – DiederikEEn

+0

это отношение между 'ид = 3' и ваш вопрос? – Amir

+0

НЕ отношение с id = 3 :) – xRobot

ответ

1

В зависимости от ваших таблиц базы данных, вы могли бы что-то подобное

SELECT c.title, p.data FROM category c LEFT JOIN post p ON p.category = c.category ORDER BY p.date 

к категории заголовку будет повторяться для каждого поста, хотя

+0

У меня есть 2 таблицы (категория и должность). Но с вашим запросом я не могу поместить заголовок в начало страницы. – xRobot

+0

На самом деле вы можете поместить заголовок в верхней части страницы, так как вывод HTML может быть после выполнения запроса. Вы можете заполнить массив объектов данными, записать заголовок, а затем использовать цикл for или iterator для вывода результатов. –

+0

Итак, в верхней части страницы я делаю запрос для получения всех сообщений и получения названия категории; делать другие вещи; распечатать информацию о первом сообщении запроса; while loop, чтобы получить другие сообщения. Это правильный и общий способ? – xRobot

0

Если вам нужны все поля из этих таблиц, так что я думаю, вы должны использовать Путь Дэмиена. Если вам нужны только заголовки, вы можете использовать следующий запрос. В этом запросе первая строка - это заголовок CATEGORY, а следующие строки - заголовки сообщений.

select * from 
(
select 0 as ordField, categoris.Category_TITLE as Title from categoris where id =3 
union all 
select 1 as ordField, POSTS.Post_TITLE as Title from POSTS where category_id=3 
) t order by ordField 
Смежные вопросы