Mysql sortierte Werte sortiert

9

Ich habe 3 mysql Tabellen (Tier, Kategorie und Tier_2_Kategorie). Jedes Tier kann 0-n Kategorien haben (zum Beispiel Fisch, Haustier, Insekt, Fleischfresser, "kann fliegen", etc.).

Tabelle "animal" (ID, Name)

%Vor%

Tabelle "Kategorien" (ID, Name)

%Vor%

Tabelle "animal_2_category" (animal_id, category_id)

%Vor%

Was ich jetzt brauche, ist eine Liste aller Kategorienkombinationen. Die folgende Abfrage funktioniert:

%Vor%

Diese Abfrage gibt Folgendes zurück:

  • Haustier-Säugetier
  • Säugetier-Haustier
  • Insekt-kann fliegen

Das Problem dabei ist, dass ich die Einträge "Pet-Säugetier" und "Säugetier-Pet" doppelt erhalte. Wie kann ich die Abfrage ändern, um nur eine davon zu erhalten, zum Beispiel:

  • Haustier-Säugetier
  • Insekt-kann fliegen
bernhardh 29.04.2015, 11:08
quelle

3 Antworten

2

Sie können Ihre Abfrage auch als

schreiben %Vor%

DEMO

    
M Khalid Junaid 29.04.2015, 11:51
quelle
1

Eine Möglichkeit, doppelte Paare zu vermeiden, besteht darin, sicherzustellen, dass Ihre Paare immer in der gleichen Reihenfolge erstellt werden. Wir können das tun, indem Sie Ihr Paar in einer if-Anweisung zusammenfassen, die die beiden Werte für uns effektiv sortiert. Dann greifen wir einfach die einzelnen Zeilen.

%Vor%

Alternativ können Sie in den Join-Kriterien auch selektiver vorgehen, damit sie nur in einer bestimmten Reihenfolge beitreten. Dies vermeidet das if, aber wir müssen noch die verschiedenen Werte erfassen.

%Vor%

Demo hier

Wie auch immer, die Ergebnisse sind die gleichen.

    
pala_ 29.04.2015 11:37
quelle
1
%Vor%     
symcbean 29.04.2015 11:44
quelle

Tags und Links