2017-09-14 72 views
0

我有3个表, 1)图书MySql的选择书籍

+----+--------------+------+ 
| id | name   | code | 
+----+--------------+------+ 
|20 | Lucian house | 2214 + 
|21 | Lucian mom | 2214 | 
|22 | GoT   | 2214 | 
+----+--------------+------+ 

2)producs_authors

+----+---------+-----------+ 
| id | book_id | author_id | 
+----+---------+-----------+ 
|1 | 20  | 5  | 
|2 | 21  | 5  | 
|3 | 22  | 7  | 
+----+---------+-----------+ 

3)作者

+----+--------------+ 
| id | name   | 
+----+--------------+ 
| 5 | Marta  | 
+----+--------------+ 
| 7 | Lucian  | 
+----+--------------+ 

而且我想要选择所有包含卢西恩名字的书籍,以及作为作者“卢西恩”的所有书籍,我该怎么做? 我需要使用子查询吗? 到现在为止我有这个(我用Yii框架),这是标准的外观:

SELECT * 
FROM books t 
LEFT JOIN products_authors a ON a.id_book = t.id 
LEFT JOIN authors b ON b.id = a.author_id 
WHERE t.name LIKE %Lucian% 
OR b.name LIKE %Lucian% 
+6

有哪些你到目前为止尝试过? – Jens

+2

我总是建议添加您试图执行的查询(: – RudiDudi

+2

听起来像一个学校作业。 – sagi

回答

0

试试这个 -

SELECT b.id, b.name, a.name 
FROM books b 
INNER JOIN products_authors pa ON pa.book_id = b.id 
INNER JOIN authors a ON a.id = pa.author_id 
WHERE b.name LIKE %Lucian% 
OR a.name LIKE %Lucian% 
0

请尽量将MySQL查询

select id,name from books where name like 'Lucian%' || id IN (select pa.book_id from producs_authors as pa,authors as a where pa.author_id=a.id && a.name= 'Lucian')