SQL-Kombination aus IF-ELSE und GROUP BY

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

SQL-Kombination aus IF-ELSE und GROUP BY

Postby mac1024 » 02. March 2022 09:43

Ich möchte eine Suchvorschau über eine Like-Abfrage einbetten. Der Nutzer gibt ein oder mehrere Buchstaben ein und soll eine Titelvorschau erhalten. Die Website ist in der Sprache des Nutzers eingestellt, aber die Übersetzung der Buchtitel liegt nicht unbedingt in dieser Sprache vor.

Code: Select all
books
id|name
1 | "Harry Potter 1"
2 | "Harry Potter 2"
3 | "Harry Potter 3"

languages
id|language
1 |English
2 |German
3 |Italian
4 |French

book_translation
id|book_id|language_id|title
1 |1      |1          |"Harry Potter and The Philosophers Stone"
2 |1      |2          |"Harry Potter und der Stein der Weisen"
3 |1      |3          |"Harry Potter e la Pietra Filosofale"
4 |2     |1         |"Harry Potter and the Chamber of Secrets"
5 |2      |4          |"Harry Potter et la Chambre des secrets"
6 |3      |3          |"Harry Potter e il Prigioniero di Azkaban"
7 |3      |3          |"Harry Potter à L'école des Sorciers"


book_id -> Foreign Key für books(id)
language_id -> Foreign Key für languages(id)

Wenn der Nutzer mit deutscher Spracheinstellung nun also "Har" eingibt, soll er die Titel der drei Bücher erhalten, aber nicht den Titel ein- und desselben Buches in mehreren Sprachen. Da er die language_id seiner Webseite mitschickt, soll er auch den deutschen Titel erhalten, wenn vorhanden. Entsprechend soll von den Einträgen mit der book_id = 1 nur derjenige mit der language_id = 2 genommen werden. Sollte jedoch eine Buchtitelübersetzung nicht existieren, soll die 2. Wahl Englisch (language_id = 1) sein. Entsprechend soll der Nutzer bei der Gruppe book_id = 2 nur jenen Titel zu sehen bekommen, der die language_id = 1 hat. Da jedoch die Gruppe mit der book_id = 3 weder in der übersandten Sprache (=2) noch in Englisch (=1) vorliegt, soll einfach der nächste Eintrag dieser book_id aus der Datenbank gewählt werden (Italienisch).

weiteres Beispiel:
Eingabe: title LIKE "%il%", language_id = 2
gewünschte Ausgabe:
Code: Select all
[
   [book_id => 1, language_id => 1, title => "Harry Potter and The Philosophers Stone"],
   [book_id => 3, language_id => 3, title => "Harry Potter e il Prigioniero di Azkaban"]
]


Ich habe leider keine Ahnung, wie ich diese Kombination von GROUP BY und IF-ELSE umsetzen kann und hoffe auf eure Hilfe.
mac1024
 
Posts: 1
Joined: 02. March 2022 09:09
XAMPP version: 3.2.4
Operating System: Windows

Re: SQL-Kombination aus IF-ELSE und GROUP BY

Postby Nobbie » 18. April 2022 11:07

Ist das hier noch aktuell? Wenn ja, bitte hier melden, dann lösen wir das hier gemeinsam.
Nobbie
 
Posts: 13176
Joined: 09. March 2008 13:04


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 39 guests