Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите сделать двухтабличный запрос к базе данных
 
 автор: serjinio   (08.07.2008 в 13:44)   письмо автору
 
 

В бд две таблицы 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 выводить РАЗДЕЛ: Игры

   
 
 автор: Trianon   (08.07.2008 в 14:11)   письмо автору
 
   для: serjinio   (08.07.2008 в 13:44)
 

>[code]echo "РАЗДЕЛ:".$row['cat_id'];//получим...РАЗДЕЛ: 1
>echo "КАТЕГОРИЯ:".$row['name'];//получим...КАТЕГОРИЯ: настольные(логические)

Неправда.
Получим
либо РАЗДЕЛ: 1 КАТЕГОРИЯ: Игры
либо РАЗДЕЛ: 2 КАТЕГОРИЯ: настольные
либо РАЗДЕЛ: 3 КАТЕГОРИЯ: логические

Все три варианта соответствует истине.

   
 
 автор: serjinio   (08.07.2008 в 15:28)   письмо автору
 
   для: Trianon   (08.07.2008 в 14:11)
 

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

   
 
 автор: serjinio   (09.07.2008 в 10:32)   письмо автору
 
   для: serjinio   (08.07.2008 в 15:28)
 

Может в запросе сделать подзапрос, где явно выбрать name из CATEGORIES где sub_id=0?
Я не силен в синтаксисе запросов....

   
 
 автор: serjinio   (10.07.2008 в 16:01)   письмо автору
 
   для: serjinio   (09.07.2008 в 10:32)
 

Запустил....
надо использовать конструкцию
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


Реальную выборку сделал по всем полям...
$res=mysql_query("SELECT DATE_FORMAT(`P`.`date`, '%d-%m-%Y') AS `dat` ,`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);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования