Übereinstimung von Eigenschaft (sortiert nach Häufigkeit der Übereinstimmung)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Übereinstimung von Eigenschaft (sortiert nach Häufigkeit der Übereinstimmung)

    Hi,

    ich habe eine Tabelle

    id, name, hobby1, hobby2, hobby3, hobby4, hobby5
    ------------------------------------------------------------------
    1, hans, laufen, reiten, tennis, angeln, shoppen
    8, suse, singen, tanzen, faulezen, -, -
    2, willi, laufen, angeln, tennis, fussball, schwimmen
    7, tina, laufen, tanzen, häkeln, -, -

    Nun wurde ich gerne vergleichen welcher Benutzer mit "hans" die meisten Übereinstimmungen der Hobbys hat.
    Bzw. Wo am meisten Hobbys identisch sind?

    Gewünschtes Ergebnis:
    - willi
    - tina
    - suse

    Wie kann ich dass in einem MySQL statement umsetzen?

    Danke für einen Tip!

  • #2
    1. Deine Tabellenstruktur ist nicht normalisiert.
    2. Wenn sie normalisiert wäre,
    SELECT a.*, COUNT(b.hobby) as cnt FROM tabelle a LEFT JOIN tabelle b USING(hobby) WHERE a.user_id = "hans" GROUP BY a.hobby ORDER BY cnt DESC
    oder sowas in der Art.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Danke!
      Hab es auf 2 Tabellen aufgeteilt und mit den "Left Join" und den "Group by" (mit Count()) umgesetzt, danke für den Hinweis.

      Kommentar


      • #4
        Original geschrieben von dreman
        Hab es auf 2 Tabellen aufgeteilt...
        Zwei Tabellen?

        Ich referenziere in meinem Query zwei Mal die gleiche Tabelle:
        tabelle {
        id
        name
        hobby
        }
        (Das kann man übrigens noch schöner machen, indem man noch eine Tabelle hobbies anlegt und dann zwischen tabelle und hobbies noch eine Verbindung zieht. Dann arbeitet nämlich 'tabelle' nur mit Integer-Werten, womit die DB schneller arbeiten kann als mit einem Haufen von Strings.)

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X