Zählt für viele boolesche Felder in einer SQL-Abfrage?

7

Ich bin mir nicht sicher, wie ich das genau erklären soll, aber Imaging haben Sie eine Tabelle mit vielen booleschen Feldern wie dieser ...

Tabelle: Autos

Spalten:

  

Automatisch: Boolesch

     

Silber: Boolesch

     

Amerikanisch: Boolesch

     

Laut: Boolesch

     

Smelly: Boolesch

     

schnell: Boolesch

(dumme Felder und die meisten von ihnen wären in Wirklichkeit keine Boole, sondern nur ein Beispiel)

Was ich tun muss, ist eine Liste dieser Felder mit einer Reihe von Suchergebnissen neben jedem einzelnen zu erstellen. Wenn also 100 silberne Autos in der Datenbank und 57 amerikanische Autos wären, könnte die Liste ein bisschen so aussehen. .

  

Automatisch: (150)

     

Silber (100)

     

Amerikaner (57)

     

Laut (120)

     

Smelly (124)

     

schnell (45)

Also, es ist im Grunde wie eine Liste von Filtern, wenn der Nutzer auf "Silber" klickt, wird die Suche auf nur silberne Autos beschränkt und sie wissen, dass sie 100 Ergebnisse erhalten werden. Die Zahlen neben allen anderen Filtern werden dann kleiner, weil wir alle Autos herausgefiltert haben, die kein Silber sind.

Das Vorkommen eines Feldes zu zählen wäre einfach ...

SELECT COUNT (*) VON CARS WHERE Automatisch = true;

... würde mir zum Beispiel die erste Zeile geben. Aber ich möchte nicht für jedes Filter eine SQL-Anweisung machen müssen, da es über 30 davon geben könnte. Ich habe viele Websites gesehen, die das tun, also muss es einfacher sein, als ich denke.

Jede Hilfe würde wirklich geschätzt werden:)

Jon

    
jonhobbs 25.11.2009, 00:55
quelle

3 Antworten

6

Angenommen, das Bit ist 1/0, dann können Sie SUM statt COUNT:

%Vor%     
Remus Rusanu 25.11.2009, 01:00
quelle
12

Bei SQL Server 2008, wenn versucht wird, ein Feld mit Datentypbit zu summieren, tritt der folgende Fehler auf:

  

Msg 8117, Ebene 16, Status 1, Zeile 10

     

Bit des Operanden-Datentyps ist ungültig für   Summenoperator.

damit du es versuchen kannst:

%Vor%     
Mostafa Elmoghazi 25.11.2009 06:46
quelle
3

Wenn es nicht bereits 1/0 ist, können Sie basierend auf dem wahren Wert Folgendes tun:

%Vor%     
Charles Bretana 25.11.2009 01:12
quelle