2011-04-21 5 views
0

i build 3 Tableavec sql left join

tb1 for book 
tb2 for sub subject 
tb3 for main subject 

chaque ont 1 sous sujet et chaque sous sujet ont 1 sujet principal je veux faire jointure entre livre => sous subject => sujet principal

je fais jointure entre livre et sous sujet, mais ne peux pas faire entre les sous sujet avec sujet principal

select book.id, book.titl, subsubject.title, mainsubject.title 
from book 
left join subsubject on book.id = subsubject.book_id 

je veux compléter cette déclaration à ajouter sujet principal

Répondre

1

Wow, je pense que je comprends ... Tu veux quelque chose comme:

SELECT book.id, book.titl, subsubject.title, mainsubject.title FROM book,subsubject,mainsubject WHERE book.id = subsubject.book_id AND subsubject.book_id=mainsubject.book_id

Vous pouvez REPLCE le WHERE avec;

LEFT JOIN subsubject on book.id = subsubject.book_id LEFT JOIN mainsubject on book.id = mainsubject.book_id

Aussi, voulez-vous dire book.title?

(My SQL ne peut pas être parfait, mais devrait travail)

0

Essayez ceci:

select book.id, book.titl, subsubject.title, mainsubject.title 
from book 
left join subsubject on book.id = subsubject.book_id 
left join mainsubject on subsubject.book_id=mainsubject.book_id 
0

L'astuce est probablement que vous avez besoin d'une autre condition de jointure entre les sous et principal que entre livre et sous:

select * 
from book join sub on book.id = sub.book_id 
    join main on sub.sub_id = main.sub_id 

Je ne sais pas pourquoi gauche (= externe) se joignent serait nécessaire si chaque produit doit avoir un sujet et chaque sujet a besoin d'un principale.

0

Essayez:

select b.id, b.title, s.title, m.title 
from book b 
left join subsubject s 
    on s.id = b.ss_id 
left join mainsubject m 
    on m.id = b.m_id 
where b.id = (id of book you'd like) 

Hope this helps.