Changeset 17ed1da for music/views.py


Ignore:
Timestamp:
04/28/25 17:55:59 (3 weeks ago)
Author:
ManuelTrajcev <manueltrajcev7@…>
Branches:
master
Children:
611686e
Parents:
bfca48b
Message:

get_num_song_from_genr for a given customer QUERRY

File:
1 edited

Legend:

Unmodified
Added
Removed
  • music/views.py

    rbfca48b r17ed1da  
    8484
    8585
    86 
    8786def media_type_percentage(request):
    8887    with connection.cursor() as cursor:
     
    103102
    104103    return render(request, 'most_listened_genre_per_customer.html', {'data': data})
     104
     105
     106def genres_per_customer(request):
     107    customers = Customer.objects.all()
     108    selected_customer_id = request.GET.get('customer_id')
     109    data = []
     110
     111    if selected_customer_id:
     112        query = """
     113            SELECT c.first_name as first_name, c.last_name as last_name, g.name as genre, COUNT(tr.track_id) as track_count
     114            FROM customer c
     115            LEFT JOIN invoice i ON c.customer_id = i.customer_id
     116            LEFT JOIN invoice_line il ON i.invoice_id = il.invoice_id
     117            LEFT JOIN track tr ON il.track_id = tr.track_id
     118            LEFT JOIN genre g ON tr.genre_id = g.genre_id
     119            WHERE c.customer_id = %s
     120            GROUP BY c.customer_id, c.first_name, c.last_name, g.genre_id, g.name
     121            ORDER BY c.first_name
     122        """
     123
     124        with connection.cursor() as cursor:
     125            cursor.execute(query, [selected_customer_id])
     126            rows = cursor.fetchall()
     127            data = [{'first_name': row[0], 'last_name': row[1], 'genre': row[2], 'track_count': row[3]} for row in rows]
     128
     129
     130    return render(request, 'genres_per_customer.html', {
     131        'customers': customers,
     132        'data': data,
     133        'selected_customer_id': selected_customer_id,
     134    })
Note: See TracChangeset for help on using the changeset viewer.