SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.07.2008 00:43:43

serjinio
Завсегдатай
Зарегистрирован: 10.07.2008
Сообщений: 30

Помогите сделать запрос

В бд две таблицы CATEGORIES и PAGE...
CATEGORIES
cat_id        sub_id          name
1                0                Игры                                  РАЗДЕЛ
2                1                Настольные                        КАТЕГОРИЯ 1
3                1                Логические                        КАТЕГОРИЯ 2

PAGE
id            cat            title
1              2        Все о настольных играх               в КАТЕГОРИИ 1
2              3        Все о логических играх               в КАТЕГОРИИ 2
3              3        Сложные логические игры           в КАТЕГОРИИ 2

Делаем запрос ...
$res= mysql_query("SELECT * FROM `PAGE` LEFT JOIN `CATEGORIES` ON `PAGE`.`cat`=`CATEGORIES`.`cat_id`");
$row = mysql_fetch_array($res);

Выводим результат
echo "РАЗДЕЛ:".$row['cat_id'];//получим...РАЗДЕЛ: 1
echo "КАТЕГОРИЯ:".$row['name'];//получим...КАТЕГОРИЯ: настольные(логические)
echo "ОПИСАНИЕ:".$row['title'];//получим...ОПИСАНИЕ: Все о настольных играх(Все о логических играх)(Сложные логические игры)

т.е (РАЗДЕЛ: 1) это Игры
Сейчас получаю при таком запросе
РАЗДЕЛ: 1         КАТЕГОРИЯ: настольные     ОПИСАНИЕ: Все о настольных играх
РАЗДЕЛ: 1         КАТЕГОРИЯ: логические     ОПИСАНИЕ: Все о логических играх
РАЗДЕЛ: 1         КАТЕГОРИЯ: логические     ОПИСАНИЕ: Сложные логические игры

Как составить запрос ,чтобы вместо РАЗДЕЛ: 1 выводить РАЗДЕЛ: Игры
Чтобы получить
РАЗДЕЛ: Игры    КАТЕГОРИЯ: настольные     ОПИСАНИЕ: Все о настольных играх
РАЗДЕЛ: Игры    КАТЕГОРИЯ: логические      ОПИСАНИЕ: Все о логических играх
РАЗДЕЛ: Игры    КАТЕГОРИЯ: логические      ОПИСАНИЕ: Сложные логические игры

Заранее спасибо откликнувшимся помочь

Неактивен

 

#2 10.07.2008 12:53:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите сделать запрос

В упор не понимаю, почему у Вас получается во всех трех строчках "раздел 1", а не "раздел 2", "раздел 3".
Видимо, там, все-таки, sub_id.

А запрос модифицировать нужно проще - присоединять названия еще и к sub_id:

SELECT p.title, c.name AS cat, s.name AS sec
FROM PAGE p
LEFT JOIN CATEGORIES c ON p.сat = c.cat_id
LEFT JOIN CATEGORIES s ON c.sub_id = s.cat_id

Неактивен

 

#3 10.07.2008 15:51:15

serjinio
Завсегдатай
Зарегистрирован: 10.07.2008
Сообщений: 30

Re: Помогите сделать запрос

Суперски...Спасибо за подсказку....благодаря ей  сделал реальный запрос с полной выборкой полей...

$res=mysql_query("SELECT DATE_FORMAT(`P`.`date`, '%d-%m-%Y') AS `date` ,`P`.`cat`,`P`.`author`,`P`.`title`,`P`.`id`,`P`.`source`,`P`.`mini_img`,`P`.`description`,
`C`.*, `S`.`name` AS `sec`
FROM `PAGE` AS `P`, `CATEGORIES` AS `C`
LEFT JOIN `CATEGORIES` AS `S`  ON  `C`.`sub_id` = `S`.`cat_id`
WHERE `P`.`cat`=`C`.`cat_id`
ORDER BY `date`,`id` DESC",$db);

Все прекрасно запустилось....как надо...
Огромное спасибо Вам за помощь, и да прибудет с Вами Здоровье и Удача.....

Отредактированно serjinio (10.07.2008 15:51:50)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson