Chrisi: MySQL Count von Match in Where Klausel ?

Hi zusammen,

ganz komische Idee, weiss nicht ob es überhaupt möglich ist:

SELECT a,b,COUNT(id) AS c
FROM table
WHERE
   key1 = 123 OR
   key2 = 123 OR
   key3 = 123
GROUP BY "treffer key1 oder key2 oder key3" ...

Also kurz gesagt ich muss wissen in welcher Spalte der Treffer zuerst gelandet ist, also ob in der Where Klausel key1,key2 oder key3 ein Treffer war. Dann möchte ich je nachdem diesen Key unten in die GROUB BY Klausel unterbringen um oben zählen zu können wieviele Spalten gefunden wurden.

Hat da jemand eine Idee für mich ?
Bzw. geht sowas überhaupt ?

Danke und Viele Grüße

Chrisi

  1. yo,

    Also kurz gesagt ich muss wissen in welcher Spalte der Treffer zuerst gelandet ist, also ob in der Where Klausel key1,key2 oder key3 ein Treffer war.

    diese aussage ist schwamming, was meinst du mit "zuerst" ? letztlich können alle drei spalten in einem datensatz wahr werden, obwohl der erste vergleich ausreichen würde, da du OR verknüpfungen benutzt.

    Dann möchte ich je nachdem diesen Key unten in die GROUB BY Klausel unterbringen um oben zählen zu können wieviele Spalten gefunden wurden.

    du meinst sicherlich, wie oft kommen die treffer in der jeweiligen spalte vor ?

    GROUP BY ist dafür meiner meinung nach kein guter ansatz. man könnte es mit UNION oder unterabfragen machen, falls du noch zusätzliche spalten neben den COUNT angezeigt haben willst.

    ohne diese zusätzlichen spalten würde ich die Funktion IF für die betroffenen drei spalten benutzen und die werte auf NULL setzen, falls es nicht den Wert 123 besitzt. dann noch die COUNT aggregat-funktion um die IF Funktion heerum und er wird dir die drei spalten zählen.

    Ilja

    1. Hi ;-),

      diese aussage ist schwamming, was meinst du mit "zuerst" ? letztlich können alle drei spalten in einem datensatz wahr werden, obwohl der erste vergleich ausreichen würde, da du OR verknüpfungen benutzt.

      Also, die einzelnen Schlüssel haben sowas wie eine Priortät, der erste Schlüssel garantiert mir das ich auch tatsächlich den Datensatz habe den ich suche, dass ganze geht dann die 3 Schlüssel nach unten wobei der letzte Schlüssel von der Aualität nciht so gut is wie der erste. Habe da eine OR Abfrage genommen weil er mir nach dem ersten OR mit dem Suchen aufhören soll, da mir der erste Treffer reicht, habe ich wohl falsch gedacht, weil er ja dann noch immer weiter sucht. Ich muss eben nur wissen welcher Schlüssel jetzt benutzt wurde um die Daten zusammenfassen zu können, damit ich weiss ob der Schlüssel mehr 1 einmal vorhanden ist :-)

      du meinst sicherlich, wie oft kommen die treffer in der jeweiligen spalte vor ?

      Jaein, mir würde es reichen wenn er mir nach dem ersten Treffer schluss macht und mir sagen kann in welcher Splate er getroffen hat und ob mehr als 1 mal.

      dann noch die COUNT aggregat-funktion um die IF Funktion heerum und er wird dir die drei spalten zählen.

      Denke das werde ich mal probieren, da kann ic mir ja dann auch was einbauen das entscheidet ob überhaupt noch weiter gesucht werden soll. Dürfte mein Problem lösen ...

      Danke wie immer und Viele Grüße

      Chrisi