Проблем с JOIN.

streleca_stz

Registered
Здравейте!
Опитвам се да извлека информация от 3 различни таблици с 1 заявка като използвам JOIN, но ги изкарва грешно. Забелязах, че е заради вида на JOIN-овете, но каквито и комбинации да правя все се показват не така както трябва. В долният пример показва някои резултати удвоени, липсващи категории за други резултати, допълнителни празни полета...
PHP:
$all = mysql_query("SELECT forum_topics.topic_id,forum_topics.title_topic,forum_topics.date,forum_topics.locked,forum_topics.important,forum_sub_cats.title_cat,users.username FROM forum_topics LEFT JOIN forum_sub_cats ON forum_sub_cats.cat_id=forum_topics.cat_id RIGHT JOIN users ON users.user_id=forum_topics.user_id ORDER BY forum_topics.topic_id DESC LIMIT $start, $limit") or die (mysql_error());
:shock:
 
eLite каза:
Какви резултати получаваш и какви резултати би искал да получиш?
Искам да получа всички написани теми, които да се покажат в обикновена таблица, с допълнителна информация за тях (дата, категория, кой я е добавил), а получавам дублирани теми (само 1 е в БД), липсващи категории, празни полета от таблицата с потребителски имена, за които знам, че със сигурност не са пускали теми и прочее.

Hous каза:
пробвай със индекси:
t1.pole,t1.pole...
t2.pole,t2.pole...
t3.pole,.t3.pole..
where t1.pole=t2.pole2 and t1.pole=t3.pole
Хм, преди време пак се бях пробвал така, но нещо не мога да ги правя тези индекси. Дава ми все грешка и затова ми се налага да изписвам името на таблицата за всяко поле, което искам да изкарвам...
 
Много е грозно такива заявки на един ред :idea: но по темата ти [sql]SELECT
ft.topic_id ,
ft.title_topic ,
ft.date ,
ft.locked ,
ft.important ,
fst.title_cat ,
u.username
FROM forum_topics ft
LEFT JOIN forum_sub_cats fst ON fst.cat_id = ft.cat_id
LEFT JOIN users u ON u.user_id = ft.user_id
GROUP BY ft.id
ORDER BY ft.topic_id DESC
LIMIT $start, $limit[/sql]
:ако продължава да ти вади грешни резултати, то най-вероятно ON клаузите са ти грешни, или реално наистина няма данни отговарящи на критериите ти.
 
Благодаря! :)
Сработи, аз после видях, че просто имам дублирани колони в 2 таблици, които карат заявката така да се чупи! :)
 

Back
Горе