【发布时间】:2009-06-14 03:25:13
【问题描述】:
MySQL 设置:一步一步。
节目 -> 链接到 --> 演讲者(通过 program_id)
此时,我可以轻松查询所有数据:
SELECT *
FROM programs
JOIN speakers on programs.program_id = speakers.program_id
简单又好用。
对我来说,诀窍就是这个。我的扬声器表还链接到第三个表“书籍”。因此,在“speakers”表中,我有“book_id”,而在“books”表中,book_id 与名称相关联。
我已经试过了(包括你会注意到的 WHERE):
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,而是需要它作为书籍名称(来自第三个表)返回。
提前感谢您的帮助。
更新:
(而不是提出一个全新的问题)
左连接对我有用。但是,我有一个新问题。多本书可以分配给一个扬声器。
使用左连接,返回两行!!我需要添加什么才能仅返回一行,但将两本书分开。
【问题讨论】:
-
该查询对我来说看起来不错,而且这几乎是您尝试做的事情的常用方式。您确定没有其他问题(例如,您是否尝试过消除 WHERE 子句,您确定数据库中的数据应该为此返回匹配项等)?