MySQL возвращает количество новых и использованных продуктов из базы данных

0

Я использую PHP и MySQL. У меня есть таблицы:

categories
id  |   category |
1   |   Fujifilm
2   |   Sony
3   |   Nikon

listings
 id  | title         |Condition_id  | cat_id
 1   | Fujifilm XE-1 |     1        |   1  
 2   | Fujifilm XE-1 |     1        |   1
 3   | Fujifilm XE-1 |     2        |   1
 4   | Fujifilm X70  |     1        |   1

Conditions
 id | condition
 1  |   New
 2  |   Used

Если кто-то ищет Fujifilm, мне нужно вернуться:

2 Results found:

Fujifilm XE-1 (2 new available, 1 used available)
Fujifilm X70  (1 new available)

Можно ли это сделать в одном запросе?

Пока у меня есть:

    SELECT 
    listings.title,
    con.condition

    FROM listings

    JOIN conditions con ON listing.condition_id = con.id
    JOIN categories cat ON cat.id = listings.cat_id

    WHERE listings.cat.id = 1   

Если я группирую по названию, условия объединяются.

  • 0
    Это то, что лучше всего обрабатывать на уровне презентации, а не MySQL.
Теги:

1 ответ

0

Использовать GROUP_CONCAT

SELECT  title,
        GROUP_CONCAT(CONCAT_WS(' ', total_count, 'condition', 'available')) AS Result
FROM
    (
        SELECT 
            listings.title,
            con.condition,
            COUNT(*) total_count
        FROM listings
            JOIN conditions con ON listings.condition_id = con.id
            JOIN categories cat ON cat.id = listings.cat_id
        WHERE listings.cat_id = 1   
        GROUP BY listings.title, con.condition
    ) a
GROUP BY title

Вот демо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню