MySQL设置:一步一步。MySQL - 加入再加入再加入
程序 - >连接 - >扬声器(由program_id)
在这一点上,很容易让我查询所有的数据:
SELECT *
FROM programs
JOIN speakers on programs.program_id = speakers.program_id
尼斯和容易。
对我来说这个技巧就是这样。我的发言人桌子也与第三张桌子“书”联系在一起。因此,在“演讲者”表中,我有“book_id”,而在“books”表中,book_id与名称相关联。
我已经试过这(包括在那里你会发现):
SELECT *
FROM programs
JOIN speakers on programs.program_id = speakers.program_id
JOIN books on speakers.book_id = books.book_id
WHERE programs.category_id = 1
LIMIT 5
没有结果。
我的问题:
- 我在做什么错?
- 什么是最有效的方法来做这个查询?
基本上,我想要取回所有程序数据和书籍数据,但不是book_id,我需要它作为书名(从第3个表格)返回。
在此先感谢您的帮助。
UPDATE:
(而不是打开一个全新的问题)
的LEFT JOIN为我工作。但是,我有一个新问题。多本书可以分配给一个扬声器。
使用左连接返回两行!我需要添加什么来返回只有一行,但分开这两本书。
查询对我来说看起来不错,而且这几乎是通常做你正在做的事情的方式。你确定别的东西没有错(例如,你是否试图消除WHERE子句,你确定数据库中的数据应该返回一个匹配这个等)? – 2009-06-14 03:31:45