2016-04-14 81 views
0

我有表 '文章'如何从两个表格中进行选择?

 
+-------------+ 
| articles | 
+----+--------+ 
| id | title | 
+----+--------+ 
| 1 | title1 | 
+----+--------+ 
| 2 | title2 | 
+----+--------+ 
| 3 | title3 | 
+----+--------+ 

表 '目录'

 
+---------------------+ 
|  catalogue  | 
+----+--------+-------+ 
| id | group | name | 
+----+--------+-------+ 
| 1 | group1 | name1 | 
+----+--------+-------+ 
| 2 | group1 | name2 | 
+----+--------+-------+ 
| 3 | group2 | name3 | 
+----+--------+-------+ 
| 4 | group2 | name4 | 
+----+--------+-------+ 

绑定表 'bindTable'

 
+------------+--------------+-------+ 
|    bindTable   | 
+------------+--------------+-------+ 
| id_article | id_catalogue | value | 
+------------+--------------+-------+ 
|  1  |  2  | 1 | 
+------------+--------------+-------+ 
|  1  |  3  | 4 | 
+------------+--------------+-------+ 
|  3  |  1  | 2 | 
+------------+--------------+-------+ 
|  3  |  3  | 1 | 
+------------+--------------+-------+ 
|  3  |  4  | 3 | 
+------------+--------------+-------+ 

和我需要得到结果如表 '结果' ,在那里我可以得到配对“catalogue_name:价值”从表'文章'的选定项目

 
+-----------------------------------------------------+ 
|      result      | 
+------------+---------------+----------------+-------+ 
| article_id | article_title | catalogue_name | value | 
+------------+---------------+----------------+-------+ 
|  1  |  title1 | group1_name2, | 1 | 
|   |    | group2_name3 | 4 | 
+------------+---------------+----------------+-------+ 
|  3  |  title3 | group1_name1, | 2 | 
|   |    | group2_name3, | 1 | 
|   |    | group2_name4 | 3 | 
+------------+---------------+----------------+-------+ 

任何人都可以告诉我一个查询字符串与一个数据库查询?感谢您的关注。

 
My vision: 
    SELECT b.id_article, a.title, c.group, c.name, b.value 
    FROM bindTable b 
    JOIN articles a ON a.id = b.id_articles 
    JOIN catalogue c ON c.id = b.id_catalogue 
    WHERE b.id_article = 1 

,但我需要一个一行对c.name & b.value一个a.id

+0

值'''也像'catalogue_name'一样是'concat'? –

+0

没关系,只有名字 – Alaksander

+0

你试过什么查询?你学会了如何做JOIN?当欲望输出不清晰时, – user3741598

回答

0

一个选择与内部联接

select a.article_id, a.article_title, b.catalogue_name, b.value 
from bindTable as c 
inner join articles as a on a.id = c. article_id 
inner join catalogues as b on c. id_catalogue = b.id 
0

这应该这样做。

SELECT articles.id AS article_id, 
     articles.title AS article_title, 
     CONCAT_WS('_', catalogue.group, catalogue.name) AS catalogue_name, 
     bindTable.value AS value 
FROM bindTable 
    INNER JOIN articles ON bindTable.id_article = articles.id 
    INNER JOIN catalogue ON bindTable.id_catalogue = catalogue.id 
+1

我不认为你需要一个'LEFT JOIN'一个简单的'INNER JOIN'应该可以工作 –

+0

确实如此,感谢评论我会更新我的答案。 –

+0

对不起我的英语,我从'文章'的'标题'搜索,我需要添加到结果表相应的字段标题ID从表目录和它的价值与绑定表,例如,从文章title1我得到两个重叠字段从表'绑定'与id'1',并且值'1'和'4'。在表'目录'中找到id我得到它的名字:“group1 name2”&“group2 name3”。最后我需要'title1'| “group1 name2 = 1”| “group2 name3 = 4” – Alaksander