加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 表的条件sql查询

发布时间:2020-12-13 14:14:09 所属栏目:PHP教程 来源:网络整理
导读:我必须从SQL运行查询.也许太容易或不容易,但不幸的是我不懂SQL.所以这是我的表: 影片 id | movie_name------------1 | prometheus 名 id | person_name-----------------1 | Ridley Scott2 | Noomi Rapace3 | Michael Fassbender4 | Charlize Theron5 | Dam
我必须从SQL运行查询.也许太容易或不容易,但不幸的是我不懂SQL.所以这是我的表:

影片

id | movie_name
------------
1  | prometheus

id | person_name
-----------------
1  | Ridley Scott
2  | Noomi Rapace
3  | Michael Fassbender
4  | Charlize Theron
5  | Damon Lindelof

films_cast

id | film_id | person_id | type
-------------------------------
1  | 1       | 1         | director
2  | 1       | 2         | actor
3  | 1       | 3         | actor
4  | 1       | 4         | actor
5  | 1       | 5         | writer

我怎样才能从这些表中得出这样的结论:

film_archive

id | movie_name | director     | writer         | cast
---------------------------------------------------------------------------------------
1  | prometheus | Ridley Scott | Damon Lindelof | Noomi Rapace,Michael Fassbender,Charlize Theron

谢谢!

您需要 join表,然后在给定合适条件的情况下按名称列执行 GROUP_CONCAT()聚合的电影分组:
SELECT   f.id,f.movie_name,GROUP_CONCAT(IF(c.type='director',n.person_name,NULL)) AS director,GROUP_CONCAT(IF(c.type='writer',NULL)) AS writer,GROUP_CONCAT(IF(c.type='actor',NULL)) AS cast
FROM     films f LEFT JOIN films_cast c ON c.film_id   = f.id
                 LEFT JOIN names n      ON c.person_id = n.id
GROUP BY f.id

在sqlfiddle上看到它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读