Getting various records from mysql query

My app has publishers and categories. One publisher can belong to several categories. When I do a mysql transaction, it will return the same publisher record for each category to which it belongs. Here's the request:

SELECT
    grdirect_publisher.name,
    grdirect_publisher.short_description,
    grdirect_publisher.thumb_image,
    grdirect_publisher.url,
    grdirect_category.name AS catname
FROM
    grdirect_publisher
Join
    grdirect_publisher_categories
    ON
    grdirect_publisher.id = grdirect_publisher_categories.publisher_id
Join
    grdirect_category
    ON
    grdirect_publisher_categories.category_id = grdirect_category.id

returns:

name short_description thumb_image url catname
-------------------------------------------------- ----------
Foo Lorem Ipsum...      images/pic.png  d.com   Video Games
Foo Lorem Ipsum...      images/pic.png  d.com   Music
Bar Blah Blah...        images/tic.png  e.com   Music

, Foo .

+3
1

DISTINCT, - , . name, DISTINCT, catname:

SELECT DISTINCT
    grdirect_publisher.name,
    grdirect_publisher.short_description,
    grdirect_publisher.thumb_image,
    grdirect_publisher.url
FROM
. . .

DISTINCT MySQL GROUP_CONCAT(), , :

SELECT
    grdirect_publisher.name,
    grdirect_publisher.short_description,
    grdirect_publisher.thumb_image,
    grdirect_publisher.url,
    GROUP_CONCAT(grdirect_category.name) AS catname
. . .
GROUP BY grdirect_publisher.id;

, , , , .

+4

Source: https://habr.com/ru/post/1699307/


All Articles