Announcement

Collapse
No announcement yet.

Zählen der Fundstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zählen der Fundstellen

    Hallöchen,

    Kann man bei einer SQL Abfrage die Anzahl der Treffer je Spalte gleich miterfahren?

    Beispiel:
    Ich habe eine DB mit Ort und Stadtteil.
    Jetzt bekomme ich einen Namen genannt (Beispiel: Friedrichstadt) den ich per LIKE mit `Ort` und `Stadtteil` abgleiche. Allerdings würde ich gerne wissen, wie oft der eingegebene Name in `Ort`und in `Stadtteil`gefunde wurde. Damit ich dann bei der Ausgabe dann gegebenenfalls noch den Stadtteil zusätzlich einblenden kann.

    Aktuell mach ich dies mit zwei Abfagen. Genial wäre es allerdings, wenn es in einer gehen würde.

    MfG O

  • #2
    Auch hallo,

    SELECT COUNT(*) könnte weiterhelfen.
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Hallo,
      Originally posted by Markus Lahr View Post
      ...SELECT COUNT(*) könnte weiterhelfen.
      Dafür benötigt er ja auch wieder zwei Abfragen.

      Mir fällt dazu nur eine Lösung mit ROLLUP ein. Und zwar so in der Art:
      [highlight=sql]
      select id, Ort, Stadtteil,
      sum(sign(instr(Ort, aram))) treffer_ort,
      sum(sign(instr(Stadtteil, aram))) treffer_stadtteil
      from staedte
      where Ort LIKE aram
      or Stadtteil LIKE aram
      group by id with rollup
      [/highlight]

      Jede Zeile enthält damit eine Spalte treffer_ort und treffer_stadtteil, die jeweils eine 1 enthalten wenn der Begriff in der jeweiligen Spalte gefunden wurde, bzw. eine numerische 0 wenn nicht.
      Zusätzlich wird am Ende des Ergebnisses eine Zeile mit einem NULL für id und den Summen der treffer_ort und treffer_stadtteil angefügt. Die Werte in Ort und Stadtteil sollte man als undefiniert betrachten, auch wenn (irgendwelche) Werte drin stehen.

      Damit hast du für jede Zeile die Unterscheidung in welchem Feld der Suchbegriff gefunden wurde und zusätzlich in der letzten Zeile die Summen aller Treffer.

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Originally posted by Markus Lahr View Post
        Auch hallo,

        SELECT COUNT(*) könnte weiterhelfen.
        Damit bekomme ich aber nur die gesamtzahl der Treffer und nicht aufgeschlüssel wo getroffen wurde. Oder?

        mit:
        [highlight=sql]
        SELECT * , count( ort ) , count( stadtteil )
        FROM `orte`
        WHERE `ort` LIKE "friedrichstadt"
        OR `stadtteil` LIKE "friedrichsstadt"
        [/highlight]
        bekomme ich bei den Counts jeweils eine 1. Und das bringt mir ja nix.



        Nachtrag: Danke Falk, ich werds einbauen. Klingt vielversprechend.
        Zuletzt editiert von Outsider; 01.06.2012, 09:26.

        Comment

        Working...
        X