2 Stimmen

SQL-Abfrage zur Erstellung der CASE-Spalte

Ich habe eine Datenbank mit diesen Tabellen:

languages: id, name
countries: id, name
country_languages: id, country_id, language_id

Ich brauche eine Abfrage, die mir eine Tabelle mit den folgenden Feldern liefert:

language_id
language_name
active

Alle Sprachen sollten in den Ergebnissen enthalten sein. Wenn jedoch diese Sprache in Land id=39 gesprochen wird, sollte die Spalte active wahr sein, ansonsten sollte sie falsch sein. Gibt es eine einfache Möglichkeit, eine solche Abfrage in mysql zu erstellen?

Danke

1voto

davek Punkte 21771

Ordnen Sie Sprachen mithilfe einer Zuordnungstabelle mit einem left outer join zu und überprüfen Sie dann die id-Spalte der Zuordnungstabelle, um zu sehen, ob Sie eine Übereinstimmung haben (active = 1) oder nicht (active = 0).

select distinct
    l.id
    , l.name
    , case when cl.id is null then 0 else 1 end as active
from languages l left outer join country_languages cl
    on l.id = cl.language_id
where cl.id = 39

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X