Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Склеить 3 запроса sql (https://javascript.ru/forum/server/46518-skleit-3-zaprosa-sql.html)

Duda.Ml1986@gmail.com 13.04.2014 14:27

Склеить 3 запроса sql
 
Всем привет. От предшественника остался сайт где часть подвала формируется так:

Таблица постов:
Код:

[id] => 4
 [url] => url url url url url
 [title] => titleв title title title
 [id_menupoint] => 1
 [short] => fdfsdfsdfdsf
 [date_add] => 2010-04-16 12:37:36

Таблица взаимосвязей между категорией поста и самим постом.
Код:

[id_menupoint] => 1
[title_menupoint] => Главная
[url_menupoint] => home
[pos] =>
[par] => 0
[id_post] => 149 )

Например посты берутся так:
Код:

SELECT url,title,id_menupoint,short
FROM posts
WHERE id_menupoint!=311
ORDER BY date_add DESC LIMIT 8

После нужно выбрать родителя:
$data_lp['url'] - это берется из foreach (у меня переменная называется $footerLastMaterialsArr as $index => $material)

foreach ($footerLastMaterialsArr as $index => $material) {
            $footerLastMaterialsArr[$index]['parent'] = $M_Menu->getParentByUrlPost($material['url']);
        }


! да, родитель ищется не по ай ди а по урл. Ужассс.

Код:

SELECT url_menupoint,par,id_menupoint
FROM menupoint
 WHERE url_menupoint='".$data_lp['url']."'

Последний шаг достать еще раз из той же таблицы данные родителя
Код:

SELECT url_menupoint,par
FROM menupoint
WHERE id_menupoint='".$data_lp2['par']."'

Дошел до соединения первых двух запросов но при добавлении
WHERE id_menupoint!=311 ORDER BY date_add DESC результат 0

Лефт джоин аналогично кидают при добавлении усовия после On или просто при LEFT JOIN menupoint два раза тоже не работает.

Короче буду рад любым мыслям.


П.С. Админка сайта должна остаться старой, а значит пределать структуру бд и создания записей и их хранения невозможно ((

nice_try 13.04.2014 14:35

через alias'ы пробовал?

Duda.Ml1986@gmail.com 13.04.2014 14:40

Цитата:

Сообщение от nice_try (Сообщение 307482)
через alias'ы пробовал?

LEFT JOIN table as T
LEFT JOIN table as R

при добавлении условий результат 0

Duda.Ml1986@gmail.com 13.04.2014 14:42

Как сделать соритированый селект из пост, а потом найти их родителей и вывести их

Duda.Ml1986@gmail.com 13.04.2014 15:52

КОроче итог :
$sql = "SELECT post.title, post.url, menu2.title_menupoint, menu2.url_menupoint " .
" FROM `posts` as post " .
" LEFT JOIN `menupoint` AS menu " .
" ON post.`url`= menu.`url_menupoint` " .
" LEFT JOIN `menupoint` AS menu2 ON menu2.`id_menupoint`= menu.`par` " .
" WHERE post.id_menupoint!=311 " .
" ORDER BY post.date_add DESC " .
" LIMIT 8" ;


Часовой пояс GMT +3, время: 22:36.