Hilfe gesucht zu meinem ersten Join in MariaDB

tobitalgie

Benutzer
Beiträge
6
Hallo,

ich bins wieder und benötige Eure Hilfe =) Folgende Aufgabe:

Ich habe 2 Tabellen in einer Datenbank
1. Inventory
2. Film

Aufgabe ist:

Welche Kinderfilme (film) sind günstig ausleihbar? Nennen Sie die Film-ID, den Titel und die Leihkosten (rental_rate) aller Filme für unter $1 ausgeliehen werden können und das Rating G aufweisen.

Meine Lösung (Ich denke, dass ist so richtig):
select film_id, title, rental_rate from film where (rental_rate< 1 and rating='G');


Jetzt zur anfolgenden Join Aufgabe:

Führen Sie nun nur noch die Filme auf, die laut Inventar (inventory) in Store 1 vorliegen. Geben Sie zu jedem Film zusätzlich die Anzahl der im Inventar geführten Kopien aus.


Mein Ansatz bisher:
select film.film_id, film.title, film.rental_rate, count(inventory.film_id) as 'Anzahl Kopien' from film
inner join inventory
where (film.rental_rate < 1 and film.rating = 'G' and inventory.film_id = film.film_id and inventory.store_id = 1);

Ihr könnt mir sicher sagen, wo mein Denkfehler liegt =)
 
Werbung:
In Abfragen mit Aggregationen (hier: count(...)) müssen alle Spalten im Resultat entweder aggregiert oder gruppiert sein. Dies ist bei Dir nicht der Fall. Im Gegensatz zu allen funktionierenden Datenbanken, die das sofort als Syntaxfehler anzeigen würden, liefert MySQL ein zufälliges und daher oft falsches Ergebniss.
 
Hi,
okay ich habe es einmal gruppiert, aber richtig ist es noch nicht

select film.film_id, film.title, film.rental_rate, inventory.store_id, inventory.film_id, count(inventory.film_id) as 'Anzahl Kopien' from film
inner join inventory
where (film.rental_rate < 1 and film.rating = 'G' and inventory.store_id = 1) group by inventory.film_id;
 
Ich glaube ich habe den Fehler gerade selbst gefunden, ist es so richtig?

select film.film_id, film.title, film.rental_rate, inventory.store_id, inventory.film_id, count(inventory.film_id) as 'Anzahl Kopien' from film
inner join inventory
where (film.rental_rate < 1 and film.rating = 'G' and inventory.store_id = 1 and film.film_id=inventory.film_id) group by inventory.film_id;
 
Werbung:
Zurück
Oben