mysql JOIN与GROUP_CONCAT在复杂的查询中

西亚玛·A·莫塔格

我遇到了运行查询的问题。我有三张桌子:

分类

| id  | name       | 
| --- | ---------- | 
| 1   | Logo       | 
| 2   | Poster     |
| 3   | Stationary | 
| 4   | Web        |
| 5   | Projects   | 
| 6   | Sporadic   | 

相片

| id  | portid | image            | preveiw |
| --- | ------ | ---------------- | ------- |
| 171 | 30     | a30preview.jpg   | 1       |
| 172 | 30     | b30.jpg          |         |
| 173 | 30     | c30.jpg          |         |
| 174 | 32     | a32preview.jpg   | 1       |
| 175 | 32     | b32.jpg          |         |
| 176 | 33     | a33preview.jpg   | 1       |
| 179 | 33     | b33.jpg          |         |
| 180 | 41     | a41preview.jpg   | 1       |

作品集

| id  | catid  | type  | title        | text         | date   |
| --- | ------ | ----- | ------------ | ------------ | ------ |
| 30  | 2      | M     | xxxxxxxx     | xxxxxxxx     | xxxxxx |
| 32  | 2      | M     | xxxxxx       | xxxxxx       | xxxxxx |
| 33  | 2      | L     | xxxxxxxxxx   | xxxxxxxxxx   | xxxxxx |
| 41  | 1      | L     | xxxx         | xxxx         | xxxxxx |
| 45  | 2      | L     | xxxxx        | xxxxx        | xxxxxx | <-(This record has no image in 'photos' table, so it's not in 'output')

我想获取这些记录作为输出(其中name ='Poster')

| id  | catid  | name     | type  | title        | text         | date   | image   <-(first image is the one that has 'photos.preview' = 1)|
| --- | ------ | -------- | ----- | ------------ | ------------ | ------ | ---------------------------------- |
| 30  | 2      | Poster   | M     | xxxxxxxx     | xxxxxxxx     | xxxxxx | a30preview.jpg, b30.jpg, c30.jpg   |
| 32  | 2      | Poster   | M     | xxxxxx       | xxxxxx       | xxxxxx | a32preview.jpg, b32.jpg            |
| 33  | 2      | Poster   | L     | xxxxxxxxxx   | xxxxxxxxxx   | xxxxxx | a33preview.jpg, b33.jpg            |

我已经试过这个SQL语句:

select * from `portfolios` 
   inner join `categories` on `portfolios`.`catid` = `categories`.`id` 
   inner join `photos` on `portid` = `portfolios`.`id` 
where `categories`.`name` = "Poster"

当然这是行不通的,因为我不知道应该在哪里放置GROUP_CONCAT任何的想法 ?

BlitZ

考虑到这GROUP_CONCAT()是一个聚合函数,您必须使用它GROUP BY来获得所需的结果集。您可以尝试以下方法:

SELECT
    `portfolios`.*,
    `categories`.*,
    GROUP_CONCAT(
        `photos`.`image`
            ORDER BY `photos`.`preveiw` DESC
            SEPARATOR ', '
    ) as `image`
FROM
   `portfolios` 
       INNER JOIN `categories` ON `portfolios`.`catid` = `categories`.`id` 
       INNER JOIN `photos` ON `portid` = `portfolios`.`id` 
WHERE
    `categories`.`name` = 'Poster'
GROUP BY
    `portfolios`.`id`

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 JOIN 查询中使用 Mysql GROUP_CONCAT

来自分类Dev

MySQL GROUP_CONCAT在子查询中具有SUM()和多个JOIN

来自分类Dev

Mysql with Group by + IF + Left Join + Group_Concat

来自分类Dev

MySQL查询中GROUP_CONCAT AND ORDER BY FIELD的问题

来自分类Dev

如何在MySQL,Group_Concat中处理这样的查询?

来自分类Dev

MySQL GROUP_CONCAT和IN查询

来自分类Dev

MySQL查询加入group_concat

来自分类Dev

来自子查询的MySQL GROUP_CONCAT

来自分类Dev

MongoDB在MySQL中替换GROUP_CONCAT

来自分类Dev

MongoDB在MySQL中替换GROUP_CONCAT

来自分类Dev

MySQL在组列表中的group_concat

来自分类Dev

旧MySQL版本中的Group_concat

来自分类Dev

在MySQL中使用双JOIN在GROUP_CONCAT中获得双结果

来自分类Dev

使用join和group_concat的mysql请求

来自分类Dev

使用join和group_concat的mysql请求

来自分类Dev

为group_concat函数优化MySQL查询

来自分类Dev

结合使用MYSQL GROUP_CONCAT和子查询

来自分类Dev

从大型生成的查询修剪尾随mysql group_concat

来自分类Dev

使用IN与group_concat结果进行MySQL查询

来自分类Dev

结合使用MYSQL GROUP_CONCAT和子查询

来自分类Dev

mysql group_concat查询给出错误

来自分类Dev

在mysql中使用GROUP_CONCAT选择查询

来自分类Dev

MySQL @ MariaDB 中 GROUP_CONCAT 中的 GROUP BY

来自分类Dev

MySQL group_concat与联接

来自分类Dev

MySQL:嵌套的GROUP_CONCAT

来自分类Dev

MySQL group_concat问题

来自分类Dev

MySQL Group_Concat 不在

来自分类Dev

mysql group_concat重复键和1次查询中多列重复的次数(查询优化)

来自分类Dev

在MySQL中聚合函数GROUP_CONCAT(expr)